Skip to main content
Hangfire servisi src/DiyanetCleanArchitecture.Infrastructure.Jobs.Hangfire projesindedir. Arka plan ve gecikmeli işleri PostgreSQL storage üzerinde çalıştırır ve MediatR ile köprülenmiş bir command/event-bus sunar.

Storage — PostgreSQL

Hangfire job verileri ayrı bir hangfire şemasında tutulur. Bağlantı ConnectionStrings:HangfireConnection’dan gelir:
QueuePollInterval 200 ms’dir — Hangfire.PostgreSql 50 ms altına izin vermez; CPU sızıntısını önlemek için bilinçli olarak biraz yüksek tutulmuştur.

Sunucular ve kuyruklar

Her Hangfire server IHostedService olarak kaydedilir. Services:Hangfire:Servers[] listesindeki her giriş bir server üretir. Standart kurulumda iki server vardır — event-bus ve command-bus — her biri kendi kuyruğu ve DLX (dead-letter) kuyruğu ile:

MediatR köprüsü

BuildingBlocks.Hangfire.MediatR.Extensions paketi, Hangfire job’larını MediatR command/event’lerine bağlar. DI’da şu servisler kayıt edilir:
  • ICommandBus — bir command’i command kuyruğuna enqueue eder; worker ICommandExecuter üzerinden MediatR Send çağırır.
  • IEventBus — bir event’i event kuyruğuna enqueue eder; IEventDispatcher MediatR Publish çağırır.
İşlenmeyen işler ilgili DLX kuyruğuna (*-dlx) düşer.

Dashboard — /jobs + BasicAuth

Dashboard Services:Hangfire:Path (default /jobs) altında host edilir ve BasicAuthAuthorizationFilter ile korunur (kullanıcı adı/şifre config’ten):
RequireSsl ve SslRedirect false ayarlıdır — dashboard’a HTTP üzerinden erişilebildiği varsayılır (ters proxy TLS sonlandırması yapar). Public erişimde mutlaka güçlü BasicAuth kimlik bilgileri kullanın.

Health check

Hangfire server’lar ve storage erişimi [Ready] tag’li bir health check ile izlenir. Worker yoksa durum Degraded olur (API request/response çalışmaya devam etmeli):

Kullanım — RecurringJob / BackgroundJob

MediatR köprüsü üzerinden command/event enqueue:

Events

Command/event bus akışı ve MassTransit Outbox ile ilişkisi.

Operasyon

Dashboard erişimi, izleme ve dağıtım notları.