后端 activemq队列模式下的多个消费者问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后端 activemq队列模式下的多个消费者问题相关的知识,希望对你有一定的参考价值。

参考技术A 问题

最近在项目中使用了 activemq 进行消息的异步传递,只有一个消费者时,系统可以正常运行,但当增加多个消费者时,却只有一个消费者进行消费,其他的消费者不消费。

原因

activemq 有一个机制,叫消息预读取,这个机制默认会读取 1000 条消息发往一个消费者中,当超过 1000 消息堆积时,才会继续读取剩下的消息发往另一个消费者中。当只有一个消费者时,这个机制可以提高效率,但有多个消费者时,就不合适了,会导致其他消费者闲置。

解决办法

在客户端的连接上,拼接jms.prefetchPolicy.all=xxx,就可以调整消息预读取条数,当有多个消费者时,可以适当的调低这个参数,保证其他消费者也可以消费到,从而提高消费速度。

完整的连接示例(以 spring boot 为例):

1

spring.activemq.broker-url=tcp://localhost:61616?jms.prefetchPolicy.all=2

以上是关于后端 activemq队列模式下的多个消费者问题的主要内容,如果未能解决你的问题,请参考以下文章

消息队列 ActiveMQ

2020-07-28 activeMq 两种模式的测试

activemq 通配符消费者如何工作?

跨多个队列的 ActiveMQ 消息组消费者选择?

ActiveMQ队列主题模式区别

ActiveMQ的消息模式——队列模式(Queue)