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ı birhangfire ş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 serverIHostedService 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; workerICommandExecuterüzerinden MediatRSendçağırır.IEventBus— bir event’i event kuyruğuna enqueue eder;IEventDispatcherMediatRPublishçağırır.
*-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):
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
Events
Command/event bus akışı ve MassTransit Outbox ile ilişkisi.
Operasyon
Dashboard erişimi, izleme ve dağıtım notları.