2015-08-31 46 views
1

我在ActiveMQ中使用異步消息使用者。我的製作人工作正常,併發送消息到隊列。現在,我的異步消息使用者正在等待onMessage()被調用,這從來都不會發生。因此,問題是:Aysnc ActiveMQ消息使用者無法使用消息

  • 消息不被異步使用者使用。
  • 消息堆積在隊列的待處理消息中。

的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

只是不斷增加,並且會一直未交付給消費者。

這是服務器端問題還是客戶端?

+0

我認爲這是一個客戶端問題。您能否提供一些關於客戶端如何連接到activemq服務器的信息? – hemant1900

+0

謝謝Hemant。後來我發現問題實際上是在服務器上,即ActiveMQ。瀏覽ActiveMQ錯誤列表時遇到了一個與我經歷的錯誤非常相似的錯誤。總之,Queue無法及時地隨機發送消息。該錯誤提到了kahaDB處於某種不一致的狀態,導致消息傳遞停滯。然而,配置'<! - policyEntry queue =「>」producerFlowControl =「false」memoryLimit =「1mb」useCache =「false」> \t \t \t \t'使我們的ActiveMQ服務器表現得很好 – piy26

回答

1

瀏覽ActiveMQ錯誤列表時遇到了一個與我經歷的錯誤非常相似的錯誤。

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

彙總,我的隊列無法在隨機時間實例將郵件傳遞給我的異步消費者。一旦發生此事件,我會在待處理消息中找到消息的已建立消息,並將消息排入隊列中的消息計數與出隊的消息不匹配。

在kahaDB的連接會談中提到的持久存儲進入某種不一致的狀態導致消息傳遞停滯的錯誤。正如bug分析中所提到的,activemq.xml中的ActiveMQ配置解決了這個問題。

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