Introduction au protocole AMQP
AMQP (Advanced Message Queuing Protocol) est un protocole standard au niveau applicatif qui fournit des services de messagerie unifiée, et constitue une norme ouverte pour les protocoles de niveau applicatif conçus pour les middlewares orientés message. AMQP est un protocole réseau permettant de transmettre des messages asynchrones entre processus.
Les clients et middlewares de messages basés sur ce protocole peuvent livrer des messages sans être limités par différents produits clients/middleware, langages de développement différents, etc.
Les principales caractéristiques de l’AMQP sont orientées messages, en file d’attente, routage (y compris pair-à-pair et publication/abonnement), fiabilité et sécurité. AMQP impose le comportement des fournisseurs de messages et des clients, permettant une véritable interopérabilité entre différents fournisseurs.
Messages de routage
Dans l’architecture AMQP, tout routage réussi de message se compose de trois parties :
- Échange : Où les producteurs publient des messages
- Files d’attente : où les consommateurs reçoivent des messages
- Liaisons : Comment les messages sont acheminés du commutateur vers une file d’attente spécifique
Échanges et liaisons
Alors, comment le message arrive-t-il à la file d’attente ? Chaque fois que vous souhaitez transmettre un message à un consommateur, vous devez d’abord l’envoyer à l’échangeur. Ensuite, en fonction de certaines règles ou clés de routage, RabbitMQ décidera à quelle file d’attente il doit livrer les messages.
Les règles – ou clés de routage – permettent de lier une file d’attente à l’échange. RabbitMQ tentera de faire correspondre la clé de routage du message à la clé utilisée dans la liaison. Le message est ensuite livré à la file d’attente selon l’un des quatre types d’échange : fanout, topic, direct, header
Échange de fanouts
Ce type d’échange diffuse tous les messages reçus à toutes les files d’attente qui lui sont liées. Toutes les clés de routage fournies avec le message publié seront ignorées.
Échange de sujets
Dans ce type d’échange, les messages sont envoyés à une file d’attente basée sur la clé de routage. Cela signifie que les messages envoyés à l’échange de sujets doivent avoir une clé de routage spécifique, qui doit être une liste de mots, séparés par points (par exemple, « acs.deviceoperations. »). La limite de formulation est de 255 octets.
La clé de liaison doit être dans le même format que la clé de routage. Ainsi, les messages envoyés avec une clé de routage spécifique seront livrés à chaque file d’attente avec une clé de liaison correspondante.
Les clés de liaison permettent les règles d’expression suivantes :
*(astérisque) ne peut remplacer qu’un seul mot # (hachage) peut remplacer zéro ou plusieurs mots Lorsqu’une file d’attente est liée par une clé de liaison « # » (hach), elle reçoit tous les messages quel que soit le code de routage, comme dans un échange Fanout fan-out.
Échange direct
Lorsqu’une file d’attente est déclarée, elleLier automatiquement à un commutateur qui utilise le nom de la file comme clé de routage。 Si la clé de routage correspond, le message est livré à la file d’attente appropriée.
Échange d’en-tête
Les commutateurs d’en-tête sont quelque peu similaires aux commutateurs de sujet, mais contrairement aux commutateurs de sujet, le routage est basé sur des clés de route, et les valeurs de routage des commutateurs d’en-tête sont basées sur les données d’en-tête du message. La clé de routage du commutateur de sujet n’est qu’une chaîne, tandis que le commutateur d’en-tête peut être un entier et un hachage.
(Fin)
|