Introduction: Dans RabbitMQ, tous les messages soumis par les producteurs sont acceptés par Exchange, qui les transmet ensuite à la file d’attente pour stockage selon une politique spécifique RabbitMQ propose quatre types d’échanges : fanout, direct, topic et header Le mode en-tête est moins utilisé en pratique, et cet article ne compare que les trois premiers modes.
1. Échange direct
Tous les messages envoyés à Direct Exchange sont transférés à la file spécifiée dans la RouteKey.
1. En général, vous pouvez utiliser l’Exchange fourni avec rabbitMQ : » (le nom de l’Exchange est une chaîne vide, ci-après appelée l’Exchange par défaut).
2. Dans ce mode, il n’est pas nécessaire d’effectuer d’opérations de liaison sur Exchange
3. Une « RouteKey » est requise pour la messagerie, qui peut simplement être comprise comme le nom de la file d’attente à laquelle il faut envoyer.
4. Si le nom de file spécifié dans la clé de route n’existe pas dans le vhost, le message est supprimé.
2. Échange de dispersion
Tous les messages envoyés à l’Échange Fanout sont transférés à toutes les files d’attente liées à cet échange.
1. Il peut être compris comme un motif de la table de routage
2. Ce mode ne nécessite pas de RouteKey
3. Ce mode nécessite de lier Exchange à la file d’attente à l’avance, un Exchange peut lier plusieurs files d’attente, et une file peut être liée à plusieurs Exchanges.
4. Si l’Exchange qui a reçu le message n’est lié à aucune file d’attente, le message est supprimé.
3. Échange de sujets
Tous les messages envoyés à l’Échange de Sujets sont transférés à toutes les files d’attente qui s’intéressent aux sujets spécifiés dans la RouteKey
1. Ce schéma est plus complexe, en termes simples, chaque file a son propre sujet de préoccupation, tous les messages ont un « titre » (RouteKey), et Exchange transmettra le message à toutes les files d’attente pouvant correspondre parfaitement au RouteKey du sujet concerné.
2. Ce mode nécessite une RouteKey, éventuellement en liant Exchange et Queue à l’avance.
3. Lors de la liaison, indiquez un sujet qui intéresse la file d’attente, comme « #.log.# » pour indiquer que la file d’attente se soucie de tous les messages liés aux journaux (un message avec une RouteKey de « MQ.log.error » sera transféré à la file d’attente).
4. « # » signifie 0 ou plusieurs mots-clés, et « » signifie un mot-clé. Par exemple, « log. » Il peut correspondre à « log.warn », mais ne peut pas correspondre à « log.warn.timeout » ; Mais « log.# » correspond à ce qui précède.
5. De même, si Exchange ne trouve pas de file d’attente correspondant à la RouteKey, il rejettera ce message.
|