【问题标题】:Multiple instances of the same Springboot application but only 1 instance consumes messages from ActiveMQ queue同一个 Springboot 应用程序的多个实例,但只有 1 个实例使用来自 ActiveMQ 队列的消息
【发布时间】:2019-01-18 05:01:41
【问题描述】:

出于扩展目的,我正在运行同一个 Spring Boot 2.0.4 应用程序的多个实例,这些实例使用以下方式使用来自 ActiveMQ 队列的消息: @JmsListener(destination = "myQ")

只有第一个消费者接收消息,如果我停止第一个消费者,第二个实例开始接收消息。我希望每个消费者以循环方式消费一条消息,而不是同一条消息。但只有第一个消费者消费消息。

【问题讨论】:

  • 那么您的期望是什么。它应该表现得像那样。仅当您有主题时,该消息才会传递给所有消费者
  • 是的,我只想将消息传递给单个消费者,但我希望两个消费者都从队列中消费。

标签: spring-boot activemq


【解决方案1】:

听起来您想要一个 JMS 主题而不是队列。在确定设置所需的配置之前,您还应该研究持久订阅、共享订阅和持久主题。

见:

【讨论】:

  • 我希望每条消息都由一个消费者消费,并且我希望有多个消费者从队列中消费。
  • 据我所知,ActiveMQ 默认为队列循环。可能是您的预取设置对于正在发送的消息数量来说太高了。在这种情况下,所有消息仍由单个消费者处理,因为第一个消费者从队列中读取所有消息,没有留给下一个消费者。见activemq.apache.org/dispatch-policies.html
  • 谢谢,但是我已经添加了 5000 条消息,并且可以看到队列中有消息剩余,因为单个消费者处理消息,而第二个消费者,同一消费者的另一个实例,不消费任何消息.
猜你喜欢
  • 2021-06-22
  • 2022-01-23
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 2020-10-15
相关资源
最近更新 更多