首页 文章

Aysnc ActiveMQ消息使用者无法使用消息

提问于
浏览
1

我在ActiveMQ中使用异步消息使用者 . 我的制作人工作正常,并向队列发送消息 . 现在,我的异步消息使用者正在等待onMessage()被调用,这种情况从未发生过 . 所以,问题是:

  • Async Consumer不使用消息 .

  • 消息堆积在队列的待处理消息中 .

ActiveMQ日志的快照还显示了许多在挂起状态下堆积的消息:

2015-08-31 09:54:45,331 | DEBUG | queue://SampleQ1, subscriptions=0, memory=0%, size=517, pending=0 <b>toPageIn</b>: 78, Inflight: 0, <b>pagedInMessages.size</b> 439, <b>pagedInPendingDispatch.size</b> 438, enqueueCount: 529, dequeueCount: 12, memUsage:2971237 | org.apache.activemq.broker.region.Queue | Queue:SampleQ1

我无法弄清问题究竟在哪里 .

计数:

  • toPageIn 78

  • pagedInMessages.size 439

  • pagedInPendingDispatch.size 438

只是不断增加,消息仍未传递给消费者 .

它是服务器端问题还是客户端问题?

1 回答

  • 1

    浏览ActiveMQ错误列表遇到了一个与我所经历的相似的错误 .

    https://issues.apache.org/jira/browse/AMQ-2955

    总而言之,我的Queue无法及时向随机实例的异步消费者传递消息 . 一旦发生此事件,我会在待处理消息中找到消息的构建,并且排队的消息数与消息出列的消息不匹配 .

    在链接中提到的bug会讨论持久存储的kahaDB在一些不一致的状态下导致消息传递到停顿状态 . 正如错误分析中所提到的,activemq.xml中的ActiveMQ配置解决了这个问题 .

    <!--policyEntry queue=">" producerFlowControl="false" memoryLimit="1mb" useCache="false">
    </policyEntry-->
    

相关问题