Il pattern publish-subscribe significa che un messaggio inviato da un produttore verrà ricevuto da più consumatori. Poiché un messaggio sarà consumato e elaborato da più consumatori, viene anche chiamato pattern di broadcast o one-to-many.
Nota: Poiché RabbitMQ implementa il pattern publish-subscribe utilizzando il tipo di scambio fanout, viene anche chiamato pattern fanout.
Diagramma dell'architettura
Spiegazione:
- P rappresenta il produttore, C1 e C2 rappresentano i consumatori, il rosso rappresenta le code e X rappresenta lo scambio.
- Lo scambio è responsabile dell'inoltro dei messaggi a tutte le code vincolate allo scambio.
- È possibile definire più code, ognuna vincolata allo stesso scambio.
- Ogni coda può avere uno o più consumatori.
Suggerimento: Nella stessa coda, un messaggio può essere elaborato solo da un consumatore. Il motivo per cui il pattern fanout può ottenere la diffusione dei messaggi è essenzialmente attraverso più code di messaggi.
Possibili casi d'uso
Il pattern publish-subscribe è un pattern di consumo one-to-many comunemente utilizzato. Ad esempio, dopo che un ordine di e-commerce viene effettuato, viene generato un messaggio di ordine. Il modulo del magazzino si iscrive al messaggio di ordine per elaborare le spedizioni, il modulo di notifica si iscrive al messaggio di ordine per inviare messaggi di testo, il modulo dei punti si iscrive al messaggio di ordine per elaborare i punti, ecc. Iscrivendosi ai messaggi secondo necessità, si realizza l'espansione del business ed è un pattern di progettazione a basso accoppiamento.