后端 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队列模式下的多个消费者问题的主要内容,如果未能解决你的问题,请参考以下文章