【发布时间】:2017-01-06 01:54:03
【问题描述】:
我有一个兔子 mq 服务器正在运行,我的所有消息都通过一个直接交换。消息被路由到各个非永久队列(它们可能会持续几个小时)。我刚开始阅读有关队列绑定到交换的内容,并且对于我是否真的需要将队列绑定到交换有点困惑。我正在使用 pika basic_publish 和 consume 函数,所以也许这是暗示的?不太清楚,只是想了解更多。
谢谢
【问题讨论】:
我有一个兔子 mq 服务器正在运行,我的所有消息都通过一个直接交换。消息被路由到各个非永久队列(它们可能会持续几个小时)。我刚开始阅读有关队列绑定到交换的内容,并且对于我是否真的需要将队列绑定到交换有点困惑。我正在使用 pika basic_publish 和 consume 函数,所以也许这是暗示的?不太清楚,只是想了解更多。
谢谢
【问题讨论】:
如果您使用直接路由的默认交换 (exchange = ''),则不必声明任何绑定。默认情况下,所有队列都绑定到默认交换器。只要路由键与队列名称完全匹配(并且队列存在),默认交换 iw
【讨论】:
总是。事实上,即使队列严格来说是消费者方的实体,它们也应该由生产者在创建交换器时声明并绑定到直接交换器。
【讨论】:
您必须使用某个绑定键将队列绑定到交换器,否则消息将被丢弃。
这就是任何 amqp 代理的工作方式,发布者发布消息以与某个密钥交换,amqp 代理(RabbitMq)将此消息从交换路由到那些与给定密钥与交换绑定的队列。
但是,在发布者中声明和绑定队列并不是强制性的。 您可以在订阅者中执行此操作,但请确保在启动发布者之前运行订阅者。
如果您认为您的消息在没有绑定的情况下被路由到队列,那么您错过了什么。
【讨论】: