Transactional Outbox
İş verisi ile yayımlanacak mesaj kaydını aynı yerel transaction içinde commit edip mesajı daha sonra güvenilir biçimde dışarı taşıyan desen.
Transaction outbox deseni, iş verisi ile yayımlanacak mesaj kaydını aynı yerel veritabanı işlemi içinde kalıcılaştırıp mesajı daha sonra dış sisteme taşıyan güvenilir yayınlama desenidir.
Çözdüğü Problem
Bir servis veritabanını güncelledikten sonra message broker'a olay yayımlamak zorundaysa iki bağımsız işlem arasında hata penceresi oluşur. Veritabanı commit olup publish başarısız olabilir veya publish gerçekleşip transaction rollback olabilir.
Transactional Outbox, iş kaydı ile yayımlanacak mesajı aynı yerel transaction içinde veritabanına yazar. Böylece iki kayıt ya birlikte commit olur ya da birlikte geri alınır.
Yayınlama
Ayrı bir publisher outbox tablosundaki kayıtları okuyup broker'a taşır. Bu adım asynchronous olduğu için dış sisteme teslim genellikle at-least-once davranışına yaklaşır; aynı mesaj birden fazla kez yayımlanabilir.
Bu nedenle consumer tarafında Idempotency veya deduplication gerekebilir.
Operasyonel Sınır
Outbox exactly-once garantisi değildir. Kayıtların temizlenmesi, yeniden deneme, sıra ve backlog büyümesi ayrıca yönetilmelidir. CDC tabanlı yayın ile polling tabanlı publisher da farklı operasyonel özellikler taşır.