Skip to main content
BuildingBlocks.Hangfire.MediatR.Extensions, MediatR komut/event’lerini Hangfire arka plan job’u olarak çalıştırmayı sağlar. Hangfire payload’ı Type’ı bilmeden serialize edemediği için paket iki şeyi çözer: (1) Hangfire serializer’ını TypeNameHandling ile yapılandırma, (2) MediatR mesajını MediatorSerializedObject’e paketleyip job içinde tekrar deserialize edip _mediator.Send(...) ile dispatch etme.
Çalışan Hangfire altyapısı (PostgreSQL storage hangfire şeması, dashboard /jobs, server kuyrukları, DLX) için bkz. Hangfire servisi. Bu sayfa MediatR köprüsüne odaklanır.

UseMediatR — Hangfire serializer kurulumu

Hangfire’ın global JSON ayarlarını, polimorfik tip bilgisini koruyacak şekilde yapılandırır. TypeNameHandling.All sayesinde serialize edilen MediatR komutu, worker tarafında doğru concrete tipe geri çözülebilir.

Köprü bileşenleri

MediatR mesajı doğrudan değil, MediatorSerializedObject zarfıyla taşınır. Bu zarf job storage’da güvenle saklanır ve worker’da yeniden kurulur.

ICommandBus

IEventBus: void Publish<T>(...) ve Task PublishAsync<T>(...) — event’i IEventDispatcher üzerinden enqueue eder.

Serialize → enqueue → execute

CommandBus, mesajı MediatorSerializedObject’e paketleyip BackgroundJob.Enqueue<ICommandExecuter>(...) ile kuyruğa alır:
Worker tarafında CommandExecuter zarfı çözer, tipi assembly’den bulur, JSON’u o tipe deserialize eder ve MediatR’a verir:
ICommandExecuter.ExecuteCommand [Queue("command-queue")] ile işaretlidir; bu işler Hangfire’da ayrı bir kuyrukta çalışır. Job dashboard’da MediatorSerializedObject.ToString() çıktısıyla (komut adı + açıklama) görünür.

Kullanım

Komut, normal MediatR pipeline’ından geçer — yani SendMonthlyReportCommandHandler ve tüm pipeline behavior’lar (validation, exception, authorization) arka planda da uygulanır.
Komut payload’ını küçük ve serileştirilebilir tutun (id’ler, primitive’ler). Job storage’a entity grafiği yazmayın; handler içinde repository’den taze veriyi çekin. Polimorfik tip bilgisi (TypeNameHandling.All) güvenilmeyen kaynaktan gelen veri için risklidir — yalnızca uygulamanın kendi ürettiği job’lar enqueue edilmelidir.

İlgili

Hangfire servisi

PostgreSQL storage, dashboard ve server kuyrukları.

Application (CQRS)

Command/handler ve pipeline behavior’lar.

Event-Driven akış

Domain/integration event’lerle karşılaştırma.

Email servisi

SendBackground ile arka plan gönderim deseni.