spring rabbitmq:如果侦听多个队列,优先级如何发挥作用?
如果我有以下配置来侦听queue1、queue2、queue3,如果所有队列都有消息,那么消息消耗的顺序是什么?首先消耗所有队列1还是以循环方式spring rabbitmq:如果侦听多个队列,优先级如何发挥作用?,spring,rabbitmq,Spring,Rabbitmq,如果我有以下配置来侦听queue1、queue2、queue3,如果所有队列都有消息,那么消息消耗的顺序是什么?首先消耗所有队列1还是以循环方式 <rabbit:listener-container id="connectListenerContainer" connection-factory="connectionFactory" prefetch="1" concurrency="1"> <rabbit:listener ref="keyRequest
<rabbit:listener-container id="connectListenerContainer" connection-factory="connectionFactory" prefetch="1" concurrency="1">
<rabbit:listener ref="keyRequestListener" queues="queue1,queue2,queue3" />
</rabbit:listener-container>
如果您收听多个队列,并且所有队列都有消息,则它们会被一个队列一个队列地使用:
queue2
ins直到queue1
有消息时才会被使用,依此类推
我们使用此技术实现优先级
模式,其中queue1
表示最高优先级
然而,当我们使用queue3
时,会有一些不希望的副作用,但是queue1
中会出现一条消息。直到queue3
不会被耗尽,我们才会看到该消息
要确认源代码块BlockingQueueConsumer
:
for (String queueName : queues) {
if (!this.missingQueues.contains(queueName)) {
consumeFromQueue(queueName);
}
}