RabbitMQ消息向多个队列分配均衡

时间:2017-04-11 12:03:54

标签: routing rabbitmq amqp

我正在使用RabbitMQ将消息从服​​务器分发到多个客户端。每个客户端都有自己的队列。服务器向交换机发布了一条消息,并且有多个绑定导致分发到多个队列。

请参见下图。消息被发布到“公共交换”,其中存在与用户特定交换的绑定(例如“用户1交换”),并且最后存在从用户特定交换到用户队列的最后绑定(例如“用户1队列”)。 Message routing

现在我的问题是我不希望某个客户端比其他客户端更早获得消息。(例如,用户1的消息总是早于用户2)

我的问题是:邮件是否以确定的顺序在队列中可用?

编辑:我知道差异很小(如果有的话)。但我需要知道 - 客户在问。 服务器在峰值期间会产生大量的大消息(每秒数千个)。此外,由于可靠性,我们在几乎所有队列上都有HA策略,这可能也需要一些开销。所以我认为如果在峰值期间存在一些差异,它们最终会出现。

谢谢

1 个答案:

答案 0 :(得分:1)

我问了same question on RabbitMQ forum,这是答案:

  

消息路由将首先根据可用的绑定编译交换列表以进行路由,   然后迭代它们。它对队列的作用相同。

     

然后执行路由的通道将简单地遍历队列并发布消息   给他们。这是异步发生的,因此列表中第一个队列的消息可以到达   比起列表中最后一个队列更早或更晚的队列。

     

具有N个队列的消费者传递也将异步发生(如果有足够的核心可用)   并行地运行到运行时。

所以回答问题没有可预测的顺序,其中一个特定的消息在队列中可用