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.
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
İlgili terimler
- Veritabanı işlemiVeritabanı işlemi, birbiriyle ilgili değişikliklerin birlikte kaydedilmesini veya birlikte geri alınmasını sağlar.
- Transactional InboxTransactional inbox, tekrar teslim edilen mesajların yerel işlemi yinelemesini önlemek için kalıcı mesaj kayıtları kullanır.
- Değişiklik verisi yakalamaDeğişiklik verisi yakalama, diğer uygulamaların işleyebilmesi için veritabanı değişikliklerini kaydeder.
- Server-Sent EventsServer-Sent Events, arka plan işinin ilerlemesi gibi metin bildirimlerini HTTP bağlantısıyla sunucudan istemciye taşır.
- ETagETag, HTTP kaynağının belirli bir gösterim sürümünü tanımlar; koşullu okuma veya değişiklik isteklerinde kullanılır.
- Cross-Origin Resource SharingCORS, tarayıcıda farklı origin’den gelen yanıtların okunmasını düzenler. API’de oturum açmanın veya yetki kontrolünün yerini tutmaz.
Projeniz ASES ile
Projenizi bize anlatın. İlk değerlendirmemizle size dönelim.