我們有一個應用,做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
版本?我們修復了一些會導致這種情況的錯誤...提供給我關於這個問題的版本,我會檢查修復並給你一個正確的答案 –
版本是2.3.0.final –
自2.3以來有幾個修復。 0。你應該考慮嘗試一個更新的版本。 –