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