Transactional Inbox
Transactional inbox, tekrar teslim edilen mesajların yerel işlemi yinelemesini önlemek için kalıcı mesaj kayıtları kullanır.
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
İlgili terimler
- İdempotansİdempotans, aynı işlem tekrarlandığında sistem durumunda tek bir çalıştırmayla aynı amaçlanan etkinin oluşmasıdır.
- Mesaj onayıMesaj onayı, bir teslimatın belirlenen kurala göre alındığını veya işlendiğini mesaj aracısına bildirir.
- Yeniden denemede rastgele gecikmeRetry jitter, bekleme sürelerini rastgele değiştirerek birçok istemcinin aynı anda yeniden istek göndermesini azaltır.
- Test kiracısıKiracılı uygulamada denetimler için kurulmuş, mantıksal olarak ayrılmış müşteri alanı.
- Webhook tekrar gönderimiWebhook tekrar gönderimi, bir bildirimin yeniden iletilmesidir. Eksik işlemi tamamlama ve tekrarlama saldırısı için farklı kontroller gerekir.
- İdempotency anahtarıİdempotency anahtarı, aynı isteğe ait yeniden denemeleri tanımlar. Etkisini kapsam, saklama süresi ve API kuralları belirler.
Bu konudaki yazılar








ASES ile API ve entegrasyon
ERP, CRM ve mağaza sorunsuz bağlantılı

