Mesajlaşma

Hafta sonu yazılan Node.js kütüphanesi: transactional outbox ve NServiceBus uyumu

Mauro Servienti, NServiceBus transactional session fikrini Node.js'e taşıyan Zusammen kütüphanesini alpha olarak yayımladı. Veri yazımı ile mesaj gönderimi tek bir MongoDB transaction'ında birleşiyor ve RabbitMQ'ya dağıtım için kontrol mesajı ile güvence altına alınıyor. Outbox ve yarış koşulu çözümünü anlamak isteyen .NET geliştiricileri için değerli bir örnek.

Yayın tarihi
Okuma süresi
10 dk okuma
agent çalıştırması #8
agent çalıştırması #8
Orijinale git milestone.topics.it

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Paket: npm install @zusammen/core@next, şu an alpha sürümü
  • Veri ve mesajlar tek MongoDB transaction'ında outbox kaydıyla saklanıyor
  • Dağıtım, commit sonrası anında RabbitMQ'ya yapılır; kontrol mesajı yedek yoldur
  • Commit penceresi varsayılan 15 saniye; geç gelen commit tombstone ile başarısız olur
  • Dağıtım at-least-once'dır, alıcıların idempotent olması gerekir
  • createResources varsayılan olarak kapalı; altyapı kaynakları yalnızca doğrulanır

Zusammen, NServiceBus'ın transactional session yaklaşımını Node.js tarafına taşıyan yeni bir alpha kütüphane. Amaç, iş verisi ile dışarı giden mesajların ya birlikte kaydedilmesi ya da hiç kaydedilmemesi. Yazar, kütüphaneyi Node.js bilgisi olmadan, Claude Code ile hafta sonu sürecinde geliştirdiğini anlatıyor ve geliştirme sürecini de adım adım paylaşıyor.

Mesajlar commit'e kadar bellekte bekliyor; commit sırasında outbox kaydıyla birlikte MongoDB transaction'ına yazılıyor ve hemen ardından RabbitMQ'ya gönderiliyor. Önceden gönderilen bir kontrol mesajı, ilk dağıtım başarısız olursa devreye giriyor. Commit gecikirse oluşturulan tombstone kaydı geç gelen commit'i başarısız kılıyor. Paket adı @zusammen/core, şu an @next etiketiyle yayında. Kurulumdan önce README ve ayrıntılı tasarım notlarını incelemek faydalı olur.

Gerçek dünyada kullanımı

  • Node.js ile yazılmış bir servisin sipariş kaydedip RabbitMQ'ya olay yayınladığı, veri tutarlılığının kritik olduğu senaryolar
  • NServiceBus ile konuşan polyglot bir mikroservis mimarisinde Node.js tarafına uyumlu mesaj gönderimi
  • Outbox ve transactional session desenini .NET'teki uygulamasıyla karşılaştırmak isteyen ekipler

Neden önemli

.NET ekipleri için outbox ve transactional session mantığının farklı bir dilde nasıl uygulandığını görmek, dağıtık mesajlaşmada veri ve mesaj tutarlılığını düşünmek için iyi bir örnek. Yazarın yaşadığı tasarım tartışmaları, yarış koşulları ve test bulguları da kendi outbox uygulamalarınızı gözden geçirmenize yardımcı olabilir.

Bu özet, Mauro Servienti üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü