2014-03-05 37 views
0

我們有一個應用,做hornetq消息的一些非常動態路由,因此從一個隊列中讀取和寫入到另一個 - 一個事務會話中。這個想法是,如果我們不能移動到目標隊列,我們​​不會將它從原始隊列中移除。它工作正常,直到我們用網絡延遲進行一些測試 - 事情開始崩潰。HornetQ的超時回滾離開的消息在DeliveringCount

由於成交不能提交併且不能被回滾的延遲。我們看到幾千條消息停留在deliverycount,即使在20分鐘後也不會清除。我們將連接工廠的呼叫超時保留爲默認值 - 即30秒。該應用程序有大約10個實例服務於8個不同的目標隊列,因此您會認爲如果按順序完成交付,我們將看不到超過80個文件卡在deliveringcount中,但我們確實看到的不僅僅是這些。

這些文件走出deliveringCount時,才或如果應用程序啓閉我們殺死並重新啓動會話。

看來,HornetQ無法超時交易(你可能認爲呼叫超時可能會訣竅),並從deliveringcount刪除這些文件。

有什麼我們應該看的財產?我正在尋找一個交易超時,但它只適用於XA交易,我們不使用。

通過我們使用messagelistener接收消息的方式。

這是我們上回滾超時錯誤(沒有對提交以及類似的超時錯誤):

javax.jms.JMSException: HQ119014: Timed out waiting for response when sending packet 68 
    at org.hornetq.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:379) 
    at org.hornetq.core.client.impl.ClientSessionImpl.stop(ClientSessionImpl.java:726) 
    at org.hornetq.core.client.impl.ClientSessionImpl.stop(ClientSessionImpl.java:712) 
    at org.hornetq.core.client.impl.ClientSessionImpl.rollback(ClientSessionImpl.java:617) 
    at org.hornetq.core.client.impl.ClientSessionImpl.rollback(ClientSessionImpl.java:597) 
    at org.hornetq.core.client.impl.DelegatingSession.rollback(DelegatingSession.java:479) 
    at org.hornetq.jms.client.HornetQSession.rollback(HornetQSession.java:250) 
    at comms.HQRouter.MessageMover$MessageListenerImpl.onMessage(MessageMover.java:185) 
    at org.hornetq.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:98) 
    at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1085) 
    at org.hornetq.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:57) 
    at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1220) 
    at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:106) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: HornetQException[errorType=CONNECTION_TIMEDOUT message=HQ119014: Timed out waiting for response when sending packet 68] 
    ... 16 more 
+0

版本?我們修復了一些會導致這種情況的錯誤...提供給我關於這個問題的版本,我會檢查修復並給你一個正確的答案 –

+0

版本是2.3.0.final –

+0

自2.3以來有幾個修復。 0。你應該考慮嘗試一個更新的版本。 –

回答

0

HornetQ的有2.3.0之後有一些bug修復。你應該嘗試它的最新版本。

我相信這個問題會在後續版本中修復,但如果不是這種情況,您應該提供一個複製此問題的測試,並提出論壇帖子,或者如果您確實已經在最新的測試中複製了該問題發佈你應該在JBoss JIRA上的HornetQ項目上打開一個錯誤修復請求。

+0

我會用最新的hornetq 2.4.0來試試這個,它似乎是最新的穩定版本。 –