spring rabbitmq:如果在多个队列上听,优先级是如何开始的?

时间:2014-11-30 08:52:16

标签: spring rabbitmq

如果我有以下配置来侦听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>

1 个答案:

答案 0 :(得分:1)

如果您收听多个队列并且所有队列都有消息,则会逐队列消耗:queue2消息直到queue1消息等等。

我们使用此技术来实现priority模式,其中queue1代表最高优先级。

但是,当我们消费queue3时会出现一些不良副作用,但queue1中会显示一条消息。在queue3赢得排空之前,我们才会看到该消息。

确认源代码BlockingQueueConsumer

for (String queueName : queues) {
    if (!this.missingQueues.contains(queueName)) {
        consumeFromQueue(queueName);
    }
}