RabbitMQ'nun konu modu, yönlendirme moduna benzer, ancak farkı konu modunun yönlendirme eşleme desteği olan jokerli bulanık eşleme sunmasıdır, yönlendirme modu yalnızca kesin eşleme destekler.
Mimarlık diyagramı
Açıklama:
- P, üreticiyi temsil eder, X değişimini, kırmızı Q1, Q2 kuyruklarını, C1, C2 tüketiciyi temsil eder.
- Değişim türü konudur.
- Konu değişim mesaj iletim mantığı: Mesajdaki Yönlendirme anahtarını Değişimle ilişkilendirilen tüm Bağlantıların Yönlendirme anahtarları ile bulanık eşleme yoluyla eşleştirir ve eşleşme varsa mesajı bağlı Kuyruğa gönderir.
İpucu: Konu modu ile doğrudan modu arasındaki fark, Yönlendirme anahtarının jokerli bulanık eşleme desteği olup olmamasıdır, geri kalanı aynıdır.
Konu tarafından desteklenen joker karakterler aşağıdaki gibidir:
-
#
(diyez) bir veya daha fazla kelimeyi eşleştirir -
*
(yıldız) sadece bir kelimeyi eşleştirir
Örnek olarak:
Q1'e bağlı yönlendirme anahtarı = *.orange.*
Q2'ye bağlı yönlendirme anahtarı = *.*.rabbit
ve lazy.#
Eğer mesajın yönlendirme anahtarı "quick.orange.rabbit" ise, Q1 ve Q2 kuyruklarını eşleştirir.
İpucu: Eğer yönlendirme anahtarı herhangi bir kuyrukla eşleşmiyorsa, mesaj atılır. Eğer yönlendirme anahtarı boşsa, fanout moduyla aynı işlevi görür ve mesajı doğrudan tüm kuyruklara ileter.
Kullanım senaryosu
Yönlendirme modu gibi, fark esasen abonelik koşullarının esnekliğinde yatar, özellikle Yönlendirme anahtarı için daha esnek eşleştirme kuralları sunar.