web-dev-qa-db-fra.com

pourquoi avons-nous besoin d'une clé de routage dans rabbitmq

Je me demande pourquoi avons-nous besoin de routing key pour acheminer le message de exchange vers la file d'attente. Ne pouvons-nous pas utiliser simplement le nom de la file d'attente pour acheminer le message. De plus, en cas de publication dans plusieurs files d'attente, nous pouvons utiliser plusieurs noms de file d'attente. Quelqu'un peut-il signaler le scénario où nous avons réellement besoin d'une clé de routage, le nom de la file d'attente ne suffira pas.

19
Naresh

Il existe plusieurs types d'échanges. L'échange fanout ignore la clé de routage et envoie des messages à toutes les files d'attente. Mais à peu près tous les autres types d'échange utilisent la clé de routage pour déterminer quelle file d'attente, le cas échéant, recevra un message.

Le tutoriels sur le site RabbitMQ décrit plusieurs cas d'utilisation où différents types d'échange sont utiles et où la clé de routage est pertinente.

Par exemple, tutoriel 5 montre comment utiliser un échange topic pour acheminer les messages de journal vers différentes files d'attente en fonction du niveau de journal de chaque message.

Si vous souhaitez cibler plusieurs files d'attente, vous devez les lier à un échange fanout et utiliser cet échange dans votre éditeur.

Vous ne pouvez pas spécifier plusieurs noms de file d'attente dans votre éditeur. Dans AMQP, vous ne publiez pas de message dans les files d'attente, vous publiez un message dans un échange. C'est la responsabilité de l'échange pour déterminer les files d'attente pertinentes. Il est possible qu'un message soit acheminé vers aucune file d'attente et qu'il soit simplement supprimé.

Le découplage des noms de file d'attente des applications est utile pour plus de flexibilité.

  • Vous pouvez établir plusieurs files d'attente pour consommer le même message, mais les files d'attente ne peuvent pas avoir le même nom.

  • Dans certains cas, l'expéditeur du message ne connaît pas les noms des files d'attente. (comme lorsque vous avez généré des noms de file d'attente de manière aléatoire lors de la mise à l'échelle horizontale d'un serveur)

  • Un échange peut acheminer des messages pour plus d'un type de consommateur. Ensuite, vous auriez besoin de caractères génériques dans vos clés de routage pour acheminer les messages vers les consommateurs concernés.

3
nurettin