RabbitMQ, Erlang dili ile geliştirilmiş ve açık kaynaklı bir dağıtılmış mesaj ortamıdır. Gelişmiş Mesaj Kuyruğu Protokolü (AMQP) desteği sağlar ve Java, Golang, PHP ve Python gibi çeşitli programlama dillerinde istemci kitaplıklarını destekler.
Özellikler
- Güvenilirlik: Mesaj kalıcılığı, işlem desteği, tüketici ve iletim onayı gibi özellikler aracılığıyla güvenilirliği sağlar.
- Yönlendirme Mekanizması: Yayın, abonelik, başlık eşleme vb. gibi yaygın abonelik ve tüketim modellerini destekler.
- Ölçeklenebilirlik: Birden fazla RabbitMQ düğümü bir kümeyi oluşturabilir ve kümeyi gerçek iş ihtiyaçlarına göre dinamik olarak genişletebilir.
- Yüksek Erişilebilirlik: Kuyruklar, kümelerdeki makineler üzerinde aynı güvenilirlikte ayarlanabilir, böylece bazı düğümlerde sorunlar olduğunda kuyruklar hala kullanılabilir olur.
- Birden Fazla Protokol: Doğal AMQP desteğine ek olarak, RabbitMQ ayrıca STOMP, MQTT vb. gibi çoklu mesajlaşma arayüzü protokollerini destekler.
- Çoklu Dil İstemcileri: RabbitMQ neredeyse tüm yaygın olarak kullanılan dilleri destekler, örneğin Java, Python, Ruby, PHP, C#, JavaScript vb.
- Yönetim Arayüzü: RabbitMQ, mesajları ve kümeleri izlemek ve yönetmek için kullanıcı dostu bir arayüz sağlar.
- Eklenti Mekanizması: RabbitMQ, genişletilmiş eklentiler için birçok eklenti sağlar ve kullanıcılar ayrıca kendi eklentilerini yazabilirler.
Ana Kullanım Senaryoları
Eşzamansız İşleme
İş sürecinin ana bölümleri veya daha az önemli parçaları, diğer sistemlerden işleme sonuçlarını senkron olarak beklemeksizin asenkron bir şekilde hedef sistemlere mesaj bildirimi kullanılarak iletilebilir.
Uygulama Bağımsızlığı
İşletme, mesaj abonelik mekanizmaları temelinde genişleyebilir. Örneğin, bir e-ticaret siparişi senaryosunda, bir kullanıcı bir sipariş verdiğinde bir sipariş mesajı oluşturulur. Depo modülü, sevkiyat için sipariş mesajına abone olabilir, puanlar modülü puan eklemek için sipariş mesajına abone olabilir ve SMS modülü metin mesajı göndermek için sipariş mesajına abone olabilir, vb.
Zirve Kesimi
Yukarı akış ve aşağı akış sistemlerin işleme kapasitelerinde farklılıklar olabileceğinden, mesaj kuyrukları aşağı akış sistemlerin trafiği düzenli bir hızda işlemesine izin vermek için bir düzenleyici olarak hareket edebilir.
Örneğin, bir sipariş için başarılı ödeme yapılır ve depoya sevkiyat yapılması için bildirimde bulunulursa, mevcut sipariş modülü 1000 yüksek eşzamanlılık desteği sağlarken, depo sevkiyatı sadece 100 destekliyorsa, bir mesaj kuyruğu tanıtılabilir ve depo modülüne sipariş mesajına abone olup kuyrukta yavaşça sevkiyat işlemini yapmasına izin verilebilir.
not: Bu, metroda sıra beklemek gibi.