如果我有以下配置来侦听queue1,queue2,queue3,如果所有队列都有消息,那么消息的消息顺序是什么?首先消耗所有队列1或循环方式?
<rabbit:listener-container id="connectListenerContainer" connection-factory="connectionFactory" prefetch="1" concurrency="1">
<rabbit:listener ref="keyRequestListener" queues="queue1,queue2,queue3" />
</rabbit:listener-container>
答案 0 :(得分:1)
如果您收听多个队列并且所有队列都有消息,则会逐队列消耗:queue2
消息直到queue1
消息等等。
我们使用此技术来实现priority
模式,其中queue1
代表最高优先级。
但是,当我们消费queue3
时会出现一些不良副作用,但queue1
中会显示一条消息。在queue3
赢得排空之前,我们才会看到该消息。
确认源代码BlockingQueueConsumer
:
for (String queueName : queues) {
if (!this.missingQueues.contains(queueName)) {
consumeFromQueue(queueName);
}
}