cof*_*ine 3 java spring rabbitmq spring-rabbit spring-amqp
使用以下构造(Spring 的最新版本)时的行为是什么?我无法在文档中找到它。
@RabbitListener(queues = {"q1", "q2", "q3"})
public class MyListener {
Run Code Online (Sandbox Code Playgroud)
3 个队列中的消息按什么顺序处理?
它是不确定的 -basicConsume
在消费者通道上执行 3 个操作(如果增加并发消费者,则每个消费者执行 3 个操作)。这些basicConsume
操作通常按照队列定义的顺序执行(在所有情况下,除非一个或多个队列暂时“丢失”)。
代理会将消息从每个队列发送到每个队列的prefetchCount
( )(默认为 1)。basicQos
我不知道代理在这种情况下使用的实际算法,但您应该假设它是不确定的 - Spring AMQP 会按照从代理收到的顺序将它们传递给侦听器。
编辑
我刚刚运行了一个测试(2 个队列,每个队列有 2 条现有消息),当预取为 1 时,它们会循环传递 - q1m1、q2m1、q1m2、q2m2。
当预取设置为 4 时,我看到 q1m1、q1m2、q2m1、q2m2。
当然,当队列为空时,消息通常会按照到达代理的顺序到达。
编辑2
请参阅消费者预取。
Spring AMQP 使用没有全局参数的变体,因此使用basicQos
默认值 ( )。false
这意味着预取是针对每个消费者的。
归档时间: |
|
查看次数: |
4861 次 |
最近记录: |