2014-03-05 19 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来试试这个,它似乎是最新的稳定版本。 –