İçeriğe geçin

Transactional Outbox

Outbox, iş verisindeki değişikliği ve gönderilecek olay kaydını birlikte saklar. Ayrı bir süreç mesajı daha sonra mesaj aracısına iletir.

API ve veri sözleşmeleri

Transactional Outbox, iş verisindeki bir değişikliği ve gönderilecek mesajın kalıcı kaydını aynı yerel veritabanı işleminde saklayan bir tasarım desenidir. Relay adı verilen ayrı bir süreç bu kayıtları okuyup mesaj aracısına gönderir. Böylece veritabanı işlemi tamamlandıktan sonra uygulama gönderim adımına ulaşamasa bile mesaj kaydı korunur.

Kurgusal örnekte S-27 destek talebinin durumu “kapalı” olur. Servis, yeni durumu ve E-27 olayını birlikte kaydeder. Veritabanı işlemi başarısız olursa ikisi de geri alınır. İşlem onaylandıktan sonra servis çökerse olay kaydı daha sonra gönderilmek üzere kalır.

Gönderim ile işleme ayrı adımlardır

Relay, E-27 olayını gönderip başarılı gönderimi kaydetmeden çökerse aynı mesajı yeniden gönderebilir. Alıcı, yinelenen teslimatları güvenle işlemelidir; Transactional Inbox bunun bir yoludur. Outbox tek başına veritabanı, mesaj aracısı ve alıcı boyunca aynı işlemin yalnızca bir kez sonuç doğuracağını garanti etmez.

Bekleyen kayıtların nasıl bulunacağını, hataların nasıl görünür olacağını ve gerekiyorsa her talebin olaylarının hangi sırayla gönderileceğini belirleyin. Kayıt temizleme ve yeniden başlatma kuralları da gerekir. CDC, relay için teknik bir temel sağlayabilir; herhangi bir satır değişikliğini yakalamak, bu değişikliğin iş açısından hangi olayı temsil ettiğini kendiliğinden tanımlamaz.

Kaynaklar