使用以下构造时的行为是什么(Spring的最新版本)。我无法在文档中找到它。
$post = $this->Posts->get($id, [
'contain' => ['Comments']
]);
// ...
处理3个队列的消息的顺序是什么?
答案 0 :(得分:2)
这是不确定的 - 在消费者渠道上执行了3次basicConsume
操作(如果你增加并发消费者,则每个消费者需要3次)。 basicConsume
操作通常按照队列定义的顺序执行(在所有情况下除非一个或多个队列暂时"缺少")。
代理会针对每个队列(默认为1)从每个队列发送消息,直至prefetchCount
(basicQos
)。
我不知道代理在这种情况下使用的实际算法,但您应该假设它是不确定的 - Spring AMQP将按照从代理接收的顺序将它们传递给监听器。
编辑
我刚刚运行了一个测试(2个队列,每个队列有2条现有消息),当预取为1时,它们被循环传递 - q1m1,q2m1,q1m2,q2m2。
预取设置为4时,我看到q1m1,q1m2,q2m1,q2m2。
当然,当队列为空时,消息通常会按照他们到达经纪人的顺序到达。
<强> EDIT2 强>
Spring AMQP使用没有全局arg的basicQos
变体,因此使用默认值(false
)。这意味着预取是按用户进行的。