我们有一个用例,我们只创建一个用户来处理队列中的消息。消息处理器在确认之前累积一定数量的消息。以异步方式接收消息并使用事务会话。消息的大小非常小。
Active MQ在一定数量的消息后停止向唯一的消费者发送更多消息并等待确认。我们尝试过像 consumer.prefetchSize , consumer.maximumPendingMessageLimit 这样的解决方案;但没有任何工作。 我们尝试了类似的用例和一个只有一个订阅者的持久主题,它工作正常。
有没有人遇到过类似的activemq问题/行为?我们在不同的论坛上尝试了很多东西,但没有一个帮助过。
Activemq版本: ActiveMQ 5.6.0
队列配置:持久队列
消费者:异步并使用交易会话作为确认模式
任何帮助或建议将不胜感激。感谢。
答案 0 :(得分:1)
我尝试了很多不同的配置来解决这个问题,方法是设置不同的activemq属性,比如prefetch policy,maxpagesize等,但是没有一个真正有用。通过引用@Jake's注释,我了解了使用JMX via监视activemq
JConsole。这是监控和管理activemq的一个非常方便的工具。
这里有一些你可能会觉得有用的文章
1. Monitoring activemq
2. Connecting activemq JMX using JConsole
通过监视队列属性,我发现 memoryLimit 属性分配给它的值非常低(仅1mb)。增加属性的值解决了我的问题。 JMS开始发送消息而不等待确认。
出于测试目的,我在conf / activemq.xml配置文件中更改了 memoryLimit 的值。