【问题标题】:spring rabbitmq: if listen on multiple queues, how does priority kicks in?spring rabbitmq:如果监听多个队列,优先级如何启动?
【发布时间】:2014-11-30 08:52:16
【问题描述】:

如果我有以下配置来监听queue1,queue2,queue3,如果所有队列都有消息,那么消息消费的顺序是什么?首先消耗所有 queue1 或循环方式?

  <rabbit:listener-container id="connectListenerContainer" connection-factory="connectionFactory" prefetch="1" concurrency="1">
        <rabbit:listener ref="keyRequestListener" queues="queue1,queue2,queue3" />
    </rabbit:listener-container>

【问题讨论】:

    标签: spring rabbitmq


    【解决方案1】:

    如果您侦听多个队列并且它们都有消息,则它们会被队列逐个消费:queue2 ins 直到queue1 有消息时才会被消费等等。

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

    但是,当我们使用 queue3 时,会有一些不希望的副作用,但在 queue1 中会出现一条消息。在queue3 不会被耗尽之前,我们不会看到该消息。

    确认源代码BlockingQueueConsumer

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

    【讨论】:

      猜你喜欢
      • 2018-10-27
      • 2015-01-06
      • 2021-01-07
      • 2021-06-07
      • 2016-09-17
      • 1970-01-01
      • 2020-11-07
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多