Wzorzec routingu w RabbitMQ jest zasadniczo taki sam jak wzorzec publikuj/subskrybuj, z tą różnicą, że wzorzec publikuj/subskrybuj przekazuje wiadomości do wszystkich powiązanych kolejek, podczas gdy wzorzec routingu przekazuje wiadomości do kolejki na podstawie dopasowania trasowania.

Z konkretnego punktu widzenia kodowania, różnica między wzorcem routingu a wzorcem publikuj/subskrybuj polega na rodzaju wymiany używanej. Wzorzec routingu korzysta z typu Direct.

Schemat architektury

Wzorzec Direct

Wyjaśnienie:

  • P reprezentuje producenta, C1 i C2 reprezentują konsumentów, czerwone prostokąty reprezentują kolejki, a X reprezentuje wymianę.
  • Typ wymiany to direct.
  • Logika przekazywania wiadomości z wymiany direct: porównaj klucz routingu w wiadomości z kluczami routingu powiązanymi z wszystkimi powiązaniami tej wymiany. Jeśli są równe, wiadomość jest wysyłana do kolejki odpowiadającej temu powiązaniu.

Na przykład, na powyższym diagramie: Klucz routingu dla kolejki Q1 to orange, a klucze routingu dla kolejki Q2 to black i green. Przy wysyłaniu wiadomości, jeśli klucz routingu wiadomości to orange, zostanie przekazany do kolejki Q1, a jeśli klucz routingu wiadomości to black lub green, zostanie przekazany do kolejki Q2.

Przykłady użycia

Wzorzec routingu jest rozszerzeniem wzorca publikuj/subskrybuj, dlatego przypadki użycia są podobne do wzorca publikuj/subskrybuj, z tą różnicą, że możliwe jest ustawienie warunków subskrypcji wiadomości.

Na przykład: Na stronie internetowej e-commerce są cztery magazyny w Chinach Wschodnich, Południowych, Północnych i Południowo-Zachodnich, z których każdy ma wdrożone zestawy systemów zarządzania magazynem. Gdy użytkownik składa zamówienie zakupu, za wysyłkę odpowiada najbliższy magazyn.

Po złożeniu zamówienia przez użytkownika i wygenerowaniu wiadomości z zamówieniem zakupu, chcemy przekazać wiadomość do odpowiadającego regionalnego systemu zarządzania magazynem, co można osiągnąć przy użyciu wzorca routingu.

Powiązania kluczy routingu dla kolejek dostawy czterech systemów zarządzania magazynem są następujące:

  • Chiny Wschodnie = east
  • Chiny Północne = north
  • Chiny Południowe = south
  • Chiny Południowo-Zachodnie = west

Po złożeniu zamówienia przez użytkownika, określ, do której regionu należy adres użytkownika, oblicz klucz routingu, a następnie wyślij wiadomość z zamówieniem z kluczem routingu. Wymiana bezpośrednia RabbitMQ przekieruje ją do odpowiadającej kolejki.