İçeriğe geçin

Transactional Inbox

Transactional inbox, tekrar teslim edilen mesajların yerel işlemi yinelemesini önlemek için kalıcı mesaj kayıtları kullanır.

API ve entegrasyon

Transactional inbox, aynı mesajın tekrar teslim edilmesine karşı yerel işlemi korumak için kalıcı mesaj kayıtları kullanan bir tasarım desenidir. Burada açıklanan yöntemde, mesajın işlendiğini belirten kayıt ile iş verisindeki değişiklik aynı veritabanı işlemi içinde kaydedilir.

Tüketici adı report-worker olan kurgusal bir hizmet, E-42 mesajını alır. Tüketici ile mesaj kimliğinin birleşimini inbox’a yazar ve bir rapor sayacını 6’dan 7’ye çıkarır. İki değişiklik birlikte kesinleştirilir. Veritabanında bu birleşime uygulanan benzersizlik kuralı, hizmetin aynı anda çalışan örneklerinde de koruma sağlar. Önce kontrol edip ardından yazmak tek başına yeterli değildir.

Çökme anı sonucu değiştirir

Veritabanı işlemi commit öncesinde başarısız olursa ne mesaj kaydı ne sayaç değişikliği kalır. Commit tamamlanır ancak ardından gönderilen aracı onayı kaybolursa E-42 tekrar gelebilir. Var olan kayıt bu kez sayacın 8’e çıkmasını önler. Aracıya gönderilen onayın kendisi bu yerel veritabanı işleminin parçası değildir.

İdempotans, tekrarın güvenli etkisini tanımlar; inbox bunu sağlamanın olası yollarından biridir. Outbox ise gönderilecek mesajları yerel değişiklikle birlikte kaydeder. Inbox, harici HTTP çağrılarının veya e-posta gönderimlerinin tam bir kez yapılacağını kendiliğinden garanti etmez. Mesaj kimliklerinin saklama süresi, olası tekrar teslim ve yeniden oynatma aralığına uymalıdır; erken kaldırılan kayıtlar sonradan gelen kopyalara karşı koruma sağlayamaz.

Kaynaklar

Bu konudaki yazılar

ASES ile API ve entegrasyon

ERP, CRM ve mağaza sorunsuz bağlantılı