RabbitMQ yönlendirme deseni temelde yayın/abone deseniyle aynıdır, ancak yayın/abone deseni mesajları tüm bağlı kuyruklara ilettikçe, yönlendirme deseni mesajları yönlendirme eşleşmesine göre kuyruklara ilettikçe aralarında fark vardır.

Belirli bir kodlama bakış açısından, yönlendirme deseni ile yayın/abone deseni arasındaki fark, kullanılan değişim türünde yatar. Yönlendirme deseni, Doğrudan türünü kullanır.

Mimarlık Diyagramı

Doğrudan Desen

Açıklama:

  • P üreticiyi, C1 ve C2 tüketiciyi temsil eder, kırmızı kutular kuyrukları temsil eder ve X değişimi temsil eder.
  • Değişim türü doğrudur.
  • Doğrudan değişim mesaj iletim mantığı: Mesajdaki Yönlendirme anahtarını, bu Değişimin tüm Bağlamalarına ilişkilendirilmiş Yönlendirme anahtarları ile karşılaştır. Eşit ise, mesaj o Bağlama ile ilişkili Kuyruğa gönderilir.

Örneğin, yukarıdaki diyagramda: Q1 kuyruğunun yönlendirme anahtarı turuncudur ve Q2 kuyruklarının yönlendirme anahtarı siyah ve yeşildir. Bir mesaj gönderirken, eğer mesajın yönlendirme anahtarı turuncuysa, Q1 kuyruğuna iletilir ve eğer mesajın yönlendirme anahtarı siyah veya yeşilse, Q2 kuyruğuna iletilir.

Kullanım Senaryoları

Yönlendirme deseni, yayın/abone deseninin bir uzantısıdır, bu yüzden kullanım senaryoları yayın/abone deseniyle benzerdir, fakat mesaj abonelik koşullarının ayarlanabilir olması farkı oluşturur.

Örneğin: Bir e-ticaret web sitesinde, Doğu Çin, Güney Çin, Kuzey Çin ve Güneybatı Çin olmak üzere dört depo bulunmaktadır ve her birinde bir dizi depo yönetim sistemi dağıtılmıştır. Bir kullanıcı sipariş verdiğinde, en yakın depo gönderimden sorumludur.

Bir kullanıcı sipariş verdiğinde ve bir satın alma siparişi mesajı oluşturulduğunda, mesajı ilgili bölgesel depo yönetim sistemi için işleme iletmek istiyoruz, bu da yönlendirme deseni kullanılarak gerçekleştirilebilir.

Dört depo yönetim sisteminin teslimat kuyruklarının yönlendirme anahtar bağlamaları şu şekildedir:

  • Doğu Çin = east
  • Kuzey Çin = north
  • Güney Çin = south
  • Güneybatı Çin = west

Bir kullanıcı sipariş verdikten sonra, kullanıcının adresinin hangi bölgeye ait olduğunu belirleyin, yönlendirme anahtarını hesaplayın ve ardından sipariş mesajını yönlendirme anahtarı ile gönderin. RabbitMQ doğrudan değişimi onu ilgili kuyruğa iletecektir.