Skip to main content
Integration event altyapısı üç pakete bölünür:
  • BuildingBlocks.Contracts.EventsIntegrationEvent base sınıfı ve IIntegrationEventHandler<T> kontratları (servisler arası paylaşılır).
  • BuildingBlocks.EventBusIEventBus soyutlaması, subscription registry, builder pattern.
  • BuildingBlocks.EventBus.MassTransit.RabbitMqaktif implementasyon: MassTransit + RabbitMQ, EF Outbox, retry/redelivery/DLX.
BuildingBlocks.EventBus.EventBusRabbitMQ (ham RabbitMQ.Client tabanlı) legacy’dir; yeni geliştirmede kullanılmaz. Outbox ve delayed redelivery yalnızca MassTransit paketinde vardır.
Uçtan uca event akışı (domain event → integration event → Outbox → consumer) için Event-Driven Akış grubuna bakın.

Kontratlar

IEventBus

Implementasyon MassTransitEventBus’tır; DI döngüsünü önlemek için IPublishEndpoint’i lazy resolve eder ve event tipine göre routing key belirler.

MassTransitRabbitMqOptions

MassTransitRabbitMq bölümüne bind edilir. EventBusOptions (EventBus bölümü): SubscriptionClientName (kuyruk adı, örn. DiyanetCleanArchitecture), ConcurrentMessageLimit (varsayılan 10).

DI kaydı

AddMassTransitRabbitMqEventBus(...) bus’ı kurar; AddMassTransitSubscription<T, TH>() her event–handler çiftini fluent kaydeder.

Kullanım — publish + handle

Retry / DLX stratejisi

İki katmanlı, ikisi de sınırlı:
  1. In-process retry (UseMessageRetry) — RetryCount × RetryIntervalSeconds (örn. 3 × 2 sn). Mesaj kuyruktan ayrılmaz.
  2. Delayed redelivery (UseDelayedRedelivery) — in-process tükenince mesaj RedeliveryIntervalsMinutes aşamalarıyla (10 sn → 1 dk → 5 dk) gecikmeli olarak kuyruğa geri konur. RabbitMQ rabbitmq_delayed_message_exchange plugin’i gerekir.
Toplam deneme sayısı (RetryCount + 1) × (RedeliveryIntervalsMinutes.Length + 1) ile sınırlıdır. Tüm denemeler tükenince mesaj kalıcı olarak {queue}_error (DLX) kuyruğuna düşer.

İlgili

Integration event'ler

Event tasarımı, idempotency ve versiyonlama.

Outbox pattern

EF Outbox ile atomik publish.

RabbitMQ topolojisi

Exchange, kuyruk ve routing key konvansiyonları.

Cache invalidation

CacheInvalidationIntegrationEvent ile multi-instance senkron.