Le modèle de publication-abonnement signifie qu'un message envoyé par un producteur sera reçu par plusieurs consommateurs. Étant donné qu'un message sera consommé et traité par plusieurs consommateurs, on l'appelle également le modèle de diffusion ou le modèle un-vers-plusieurs.
Remarque : Comme RabbitMQ implémente le modèle de publication-abonnement en utilisant le type d'échange fanout, on l'appelle également le modèle fanout.
Diagramme d'architecture
Explication :
- P représente le producteur, C1 et C2 représentent les consommateurs, le rouge représente les files d'attente, et X représente l'échange.
- L'échange est responsable de l'acheminement des messages vers toutes les files d'attente liées à l'échange.
- Plusieurs files d'attente peuvent être définies, chacune étant liée au même échange.
- Chaque file d'attente peut avoir un ou plusieurs consommateurs.
Astuce : Dans la même file d'attente, un message ne peut être traité que par un seul consommateur. La raison pour laquelle le modèle fanout peut réaliser la diffusion de messages est essentiellement à travers de multiples files d'attente de messages.
Cas d'utilisation
Le modèle de publication-abonnement est un modèle de consommation un-vers-plusieurs couramment utilisé. Par exemple, après qu'une commande e-commerce est passée, un message de commande est généré. Le module de stock s'abonne au message de commande pour traiter les expéditions, le module de notification s'abonne au message de commande pour envoyer des messages texte, le module de points s'abonne au message de commande pour traiter les points, etc. En souscrivant aux messages selon les besoins, l'expansion commerciale est réalisée, et c'est un modèle de conception à faible couplage.