Wolverine 6.51 ile Serverless Ortamda Transactional Outbox Dönemi
Wolverine 6.51, DurabilityMode.ServerlessWithOutbox modunu ekliyor. Bu sayede Cloud Run, AWS Lambda ya da Azure Functions üzerinde çalışan handler'lar arka plan süreçleri olmadan transactional outbox kullanabilir. Mod, dışarıdan tetiklenen bir durability pass ile gönderilemeyen mesajları kurtarır ve Wolverine.HTTP üzerinden push ile mesaj almayı da destekler.
Kilit noktalar
- DurabilityMode.ServerlessWithOutbox, Wolverine 6.51 ile geliyor ve arka plan agent'larını kapatırken outbox'ı koruyor.
- Giden mesajlar aynı veritabanı transaction'ı içinde outbox'a yazılır ve istek bitmeden gönderilir.
- Başarısız gönderimler, host.RunDurabilityPassAsync() veya MapWolverineDurabilityEndpoints() ile tetiklenen durability pass'te kurtarılır.
- OutboxStaleTime bu modda varsayılan olarak 60 saniyedir; pass bu süreden eski satırları yeniden gönderir.
- MapWolverineDurabilityEndpoints() yetkilendirme seçmenizi zorunlu kılar; AllowAnonymous() açıkça yazılmalıdır.
- Gelen mesajlar için MapWolverinePushReceiver() ile HTTP push alıcısı, Pub/Sub için MapPubsubPushReceiver() kullanılabilir.
Wolverine, normalde uzun süre çalışan süreçler için tasarlandı. Node kaydı, leader election, polling ve broker dinleyicileri gibi arka plan işleri serverless ortamlarda sorun çıkarıyordu. Wolverine 6.51 ile gelen DurabilityMode.ServerlessWithOutbox modu, bu arka plan işlerini kapatırken outbox garantisini koruyor. Giden mesajlar, handler'ın veritabanı işlemiyle aynı transaction içine yazılıyor, commit sonrasında istek bitmeden gönderiliyor ve başarıyla kabul edilen satırlar silinüyor.
Gönderim başarısız olursa satır outbox'ta kalır ve dışarıdan tetiklenen bir durability pass bunu sonradan gönderir. Pass, zamanlanmış mesajları da serbest bırakır ve süre sınırı içinde çalışır. Pass'i kod içinden, HTTP endpoint'i üzerinden ya da komut satırından tetikleyebilirsiniz. Ayrıca Wolverine.HTTP push receiver'ı, Google Pub/Sub push abonelikleri gibi kaynaklardan gelen mesajları handler'lara yönlendiriyor. Bu modda gelen mesajlar için dinleyici başlatılmadığını ve gecikmenin pass sıklığına bağlı olduğunu unutmayın.
Gerçek dünyada kullanımı
- Cloud Run üzerinde Pub/Sub ile çalışan, bütçesi düşük bir Wolverine ve Marten servisi.
- AWS Lambda fonksiyonunun veritabanı yazımı ile olay yayınlamasını atomik tutması gereken sipariş işleme akışı.
- Zamanlayıcı ile çağrılan bir Cloud Run Job veya CronJob'un bekleyen outbox mesajlarını periyodik olarak göndermesi.
Neden önemli
Serverless ortamda Wolverine kullanan ekipler artık outbox garantisini always-on süreç olmadan elde edebilir. Kurtarma gecikmesinin durability pass sıklığına eşit olduğunu ve push endpoint'lerini yetkilendirmeniz gerektiğini bilmek önemlidir.
Benzer haberler
- Critter Stack: mesaj kaybı, kapanış ve multi-tenancy düzeltmeleriJasperFx (Critter Stack) Blog3 gün önce
- CritterWatch 1.1 dead letter'ları hata nedenine göre gruplayıp tek işlem olarak yönetirJasperFx (Critter Stack) Blog4 gün önce
- Wolverine 6.52.0: adlandırılmış bağlantılar ve timer agent'larWolverine releases24 Eki