我需要 rabbitmq 绑定才能直接交换吗?
Do I need rabbitmq bindings for direct exchange?
我有一个 rabbit mq 服务器 运行,我的所有消息都经过一个直接交换。消息被路由到单独的非永久队列(它们可能会持续几个小时)。我刚刚开始阅读有关队列绑定到交换器的内容,并且对于我是否真的需要将队列绑定到交换器感到有点困惑。我正在使用 pika basic_publish
和 consume
函数,所以这可能是隐含的?不太确定只是想多了解一点。
谢谢
总是。事实上,即使队列严格来说是一个 consumer-side 实体,它们也应该在创建交换时由生产者声明并绑定到直接交换。
您必须使用一些绑定键将队列绑定到交换器,否则消息将被丢弃。
这就是任何 amqp 代理的工作方式,发布者发布消息以与某个密钥进行交换,amqp 代理 (RabbitMq) 将此消息从交换路由到与给定密钥交换绑定的那些队列。
然而,在发布者中声明和绑定队列不是强制性的。
您可以在订阅者中执行此操作,但请确保在启动发布者之前 运行 您是订阅者。
如果您认为您的消息在没有绑定的情况下被路由到队列,那您就错过了一些东西。
如果您将默认交换器用于直接路由 (exchange = ''),则无需声明任何绑定。默认情况下,所有队列都绑定到默认交换器。只要路由键与队列名称完全匹配(并且队列存在),默认交换 iw
我有一个 rabbit mq 服务器 运行,我的所有消息都经过一个直接交换。消息被路由到单独的非永久队列(它们可能会持续几个小时)。我刚刚开始阅读有关队列绑定到交换器的内容,并且对于我是否真的需要将队列绑定到交换器感到有点困惑。我正在使用 pika basic_publish
和 consume
函数,所以这可能是隐含的?不太确定只是想多了解一点。
谢谢
总是。事实上,即使队列严格来说是一个 consumer-side 实体,它们也应该在创建交换时由生产者声明并绑定到直接交换。
您必须使用一些绑定键将队列绑定到交换器,否则消息将被丢弃。
这就是任何 amqp 代理的工作方式,发布者发布消息以与某个密钥进行交换,amqp 代理 (RabbitMq) 将此消息从交换路由到与给定密钥交换绑定的那些队列。
然而,在发布者中声明和绑定队列不是强制性的。 您可以在订阅者中执行此操作,但请确保在启动发布者之前 运行 您是订阅者。
如果您认为您的消息在没有绑定的情况下被路由到队列,那您就错过了一些东西。
如果您将默认交换器用于直接路由 (exchange = ''),则无需声明任何绑定。默认情况下,所有队列都绑定到默认交换器。只要路由键与队列名称完全匹配(并且队列存在),默认交换 iw