RabbitMQ-2交换将消息发送到同一队列

时间:2016-04-20 11:47:08

标签: rabbitmq rabbitmq-exchange

我有2个独立实例(p1,p2)的生产者应用程序,以及2个独立实例(c1,c2)的消费者应用程序。

生产者p1通过topic = t1,queueName = name1 连接到交换。

消费者c1使用topic = t1,queueName = name1 连接到交换。

生产者p2通过topic = t2,queueName = name1 连接到交换。

消费者c2通过topic = t2,queueName = name1 连接到交换。

我在RabbitMQ GUI中看到我有2个交换但只有1个队列。 相反,c1将仅从p1接收消息,而c2将仅从p2接收消息,RabbitMQ正在对c1和c2之间的消息进行循环。因此,我从p2发送的消息正由c1和c2接收。

我认为在RabbitMQ中,每次交换的相关性是多个队列,这里的行为是出乎意料的。为什么呢?

1 个答案:

答案 0 :(得分:1)

每次交换都可以有多个队列,这是真的;但是路由密钥是一个队列问题,而不是消费者问题。

兔子将使用路由密钥将消息发送到正确的队列;一旦在主题交换上收到消息,该消息将被发送到绑定到该特定主题的所有队列。你这里只有一个队列,这就是C1和C2都得到消息的原因。

查看this链接以获得明确的示例。

enter image description here

如果你需要分开C1和C2,你需要将它们绑定到2个不同的队列,而不是同一个队列。