BabelQueue, farklı dillerde yazılmış servislerin aynı kuyruğu paylaşabilmesi için tanımlanmış açık kaynak bir mesaj standardıdır. Fikir sade: kuyruğa giden zarfı dile özgü serileştirmeden kurtarıp katı bir JSON şemasına bağlamak.
Sorun
Poliglot mimarilerde kuyruk çoğu zaman en kırılgan noktadır. PHP tarafı serialize() çıktısı yazar, Python tarafı onu okuyamaz; ekipler araya çevirici servisler ya da elle yazılmış yapıştırıcı kod koyar. Bu katman hem gecikme ekler hem de mesaj şeması değiştiğinde ilk kırılan yer olur.
Yaklaşım
BabelQueue telde tek bir zarf tanımlar: iş adı bir URN, veri düz JSON, meta alanları sabit. Üretici hangi dilde olursa olsun aynı baytları yazar; tüketici hangi dilde olursa olsun aynı şemayı okur. Diller arasında paylaşılan sınıf yoktur, dolayısıyla ortak bir paket sürümüne bağımlılık da yoktur.
Ekosistem
Altı yerel SDK bulunur — PHP, Python, Go, Node.js, Java, .NET — ve her biri kendi ekosisteminin yaygın çatılarıyla entegre çalışır: Laravel ve Symfony, Celery ve Django, Asynq, BullMQ ve NestJS, Spring Boot, MassTransit. Kurulum kendi paket yöneticinizle yapılır; köprü servis kurmak gerekmez.
İşletme tarafı
Standart broker-bağımsızdır ve mevcut altyapının üzerine oturur. Her zarf trace_id taşıdığı için bir mesajın dilden dile yolculuğu dağıtık izleme araçlarında tek bir akış olarak görünür.
BabelQueue açık kaynaktır; SDK’lar ve şema tanımı GitHub üzerinde geliştirilir.
Öne çıkan özellikler
- Katı JSON zarf şeması
- PHP, Python, Go, Node.js, Java ve .NET için yerel SDK
- Laravel, Symfony, Celery, Django, Asynq, BullMQ, NestJS, Spring Boot ve MassTransit adaptörleri
- Broker-bağımsız: yedi broker destekli
- Her mesajda yerleşik trace_id
- URN tabanlı mesaj adresleme
Sıkça sorulan sorular
BabelQueue bir broker mı?+
Hayır. BabelQueue bir kuyruk standardı ve SDK ailesidir; mevcut broker’ınızın üzerinde çalışır. Kendi altyapısını getirmez, aradaki mesaj sözleşmesini tanımlar.
Hangi dilleri destekliyor?+
PHP, Python, Go, Node.js, Java ve .NET için yerel SDK’lar var. Her SDK kendi ekosisteminin çatısı için adaptör içerir: Laravel ve Symfony, Celery ve Django, Asynq, BullMQ ve NestJS, Spring Boot, MassTransit.
PHP tarafındaki serialize() sorununu nasıl çözüyor?+
Zarf, dile özgü serileştirme yerine katı bir JSON şemasıdır. Telde giden bayt dizisi her dilde aynıdır, bu yüzden bir PHP üreticisinin mesajını Go ya da .NET tüketicisi doğrudan okuyabilir.
Mesajlar arasında sınıf paylaşmak gerekiyor mu?+
Hayır. Mesajlar `urn:babel:orders:created` gibi URN’lerle adreslenir ve tüketici tarafında bir işleyiciye eşlenir. Diller arasında paylaşılan bir sınıf ya da paket yoktur.
Dağıtık izleme ile çalışır mı?+
Zarfın kendisinde `trace_id` alanı bulunur; mesaj diller ve servisler arasında geçerken aynı iz kimliği taşınır.
Bir sonraki projenizi birlikte kuralım
Fikrinizi anlatın, size en uygun çözümü tasarlayalım.
İletişime geç