Le schéma de routage de RabbitMQ est essentiellement similaire au schéma de publication/abonnement, la différence étant que le schéma de publication/abonnement transfère les messages à toutes les files liées, tandis que le schéma de routage transfère les messages à la file en fonction de la correspondance de routage.
D'un point de vue de codage spécifique, la différence entre le schéma de routage et le schéma de publication/abonnement réside dans le type d'échange utilisé. Le schéma de routage utilise le type Direct.
Schéma d'architecture
Explication :
- P représente le producteur, C1 et C2 représentent les consommateurs, les boîtes rouges représentent les files et X représente l'échange.
- Le type d'échange est direct.
- Logique de transmission de messages de l'échange direct : comparer la clé de routage dans le message avec les clés de routage associées à tous les bindings de cet échange. S'ils sont égaux, le message est envoyé à la file correspondant à ce binding.
Par exemple, dans le schéma ci-dessus : La clé de routage de la file Q1 est orange, et les clés de routage des files Q2 sont noir et vert. Lors de l'envoi d'un message, si la clé de routage du message est orange, il sera transmis à la file Q1, et si la clé de routage du message est noir ou vert, il sera transmis à la file Q2.
Cas d'utilisation
Le schéma de routage est une extension du schéma de publication/abonnement, donc les cas d'utilisation sont similaires au schéma de publication/abonnement, à la différence que nous pouvons définir des conditions d'abonnement aux messages.
Par exemple : Sur un site de commerce électronique, il existe quatre entrepôts en Chine orientale, Chine du Sud, Chine du Nord et sud-ouest de la Chine, chacun ayant un ensemble de systèmes de gestion d'entrepôt déployés. Lorsqu'un utilisateur passe une commande, l'entrepôt le plus proche est responsable de l'expédition.
Après qu'un utilisateur passe une commande et qu'un message de commande d'achat est généré, nous voulons transmettre le message au système de gestion d'entrepôt régional correspondant pour le traitement, ce qui peut être réalisé en utilisant le schéma de routage.
Les bindings de clés de routage pour les files de livraison des quatre systèmes de gestion d'entrepôt sont les suivants :
- Chine orientale = est
- Chine du Nord = nord
- Chine du Sud = sud
- sud-ouest de la Chine = ouest
Après qu'un utilisateur passe une commande, déterminez à quelle région appartient l'adresse de l'utilisateur, calculez la clé de routage, puis envoyez le message de commande avec la clé de routage. L'échange direct RabbitMQ le transmettra à la file correspondante.