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
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.