Wzorzec publikuj-subskrybuj oznacza, że wiadomość wysłana przez producenta zostanie odebrana przez wielu konsumentów. Ponieważ wiadomość będzie konsumowana i przetwarzana przez wielu konsumentów, nazywany jest również wzorcem rozgłośniowym lub jeden-do-wielu.

Uwaga: Ponieważ RabbitMQ implementuje wzorzec publikuj-subskrybuj przy użyciu typu wymiany fanout, nazywany jest również wzorcem fanout.

Schemat architektury

wzorzec fanout

Wyjaśnienie:

  • P reprezentuje producenta, C1 i C2 reprezentują konsumentów, czerwony kolor oznacza kolejki, a X oznacza wymianę.
  • Wymiana jest odpowiedzialna za przekazywanie wiadomości do wszystkich kolejek związanych z wymianą.
  • Można zdefiniować wiele kolejek, z których każda jest związana z tą samą wymianą.
  • Każda kolejka może mieć jednego lub więcej konsumentów.

Wskazówka: W tej samej kolejce wiadomość może zostać przetworzona tylko przez jednego konsumenta. Mechanizm pozwalający na rozgłaszanie wiadomości w sposobie fanout polega głównie na wykorzystaniu wielu kolejek wiadomości.

Przykłady użycia

Wzorzec publikuj-subskrybuj to powszechnie stosowany wzorzec konsumpcji jeden-do-wielu. Na przykład po złożeniu zamówienia w sklepie internetowym generowana jest wiadomość o zamówieniu. Moduł magazynu subskrybuje wiadomość o zamówieniu, aby przetworzyć przesyłki, moduł powiadomień subskrybuje wiadomość o zamówieniu, aby wysłać wiadomości tekstowe, moduł punktów subskrybuje wiadomość o zamówieniu, aby przetworzyć punkty itp. Poprzez subskrybowanie wiadomości w miarę potrzeb osiągane jest rozszerzanie biznesu, co stanowi wzorzec niskiego sprzężenia.