Java JBoss 6.1中未自动确认的消息

Java JBoss 6.1中未自动确认的消息,java,jboss,hornetq,Java,Jboss,Hornetq,我们最近从JBoss4.2升级到JBoss6.1。新的JMS消息传递(现在使用的是HornetQ)被卡住了,有15个消费者,但处理的消息不超过15条。这看起来像是一个确认问题,消息没有得到确认。它们由使用EJB2.0编写的MDB使用,确认模式为自动确认(我们目前正在尝试将其提升到2.1,以查看这是否有区别)。有人有过这样的经历吗?有没有办法将服务器配置为默认自动确认 bean位于容器管理的事务中。问题的根源是。一旦该异常发生,队列基本上是死的,并且不会确认进一步的消息。您应该向HornetQ开发

我们最近从JBoss4.2升级到JBoss6.1。新的JMS消息传递(现在使用的是HornetQ)被卡住了,有15个消费者,但处理的消息不超过15条。这看起来像是一个确认问题,消息没有得到确认。它们由使用EJB2.0编写的MDB使用,确认模式为自动确认(我们目前正在尝试将其提升到2.1,以查看这是否有区别)。有人有过这样的经历吗?有没有办法将服务器配置为默认自动确认


bean位于容器管理的事务中。

问题的根源是。一旦该异常发生,队列基本上是死的,并且不会确认进一步的消息。

您应该向HornetQ开发人员(或应用程序服务器开发人员)提供一个有效的测试用例,表明您正在执行一个有效的用例,并且它不是一个无效的用法


到目前为止,您显示的异常是由一个无效的XA使用引起的,但到目前为止,它并没有成为HornetQ上的一个bug

这似乎是因为您的事务有问题,或者事务管理器集成有问题。TM不应该在没有xaStart的情况下调用xaEnd。该API并非真正面向用户,因此,是什么导致与应用程序服务器的集成出现问题,或者存在一些无效的TM用法。您是否在Xantransactioned JMSsession中调用acknowledge?那是无效的用法。在这种情况下,我们当然应该忽略它。@Clebert,是的,确实如此,在事务处理的JMSession中调用了acknowledge。Message.acknowledge上的JavaDocs状态:“对于事务会话和指定使用隐式确认模式的会话,对确认的调用都被忽略。”-因此应该忽略它,而不是引发异常。好的,我会看一看,然后我们会解决它,我希望至少能就我的答案进行表决。试图在这里收集点:)我链接的JIRA问题中清楚地概述了这个bug。我认为他们明白了重点,但是用例非常简单——使用容器管理的事务创建MDB,并在MDB中确认消息。幸运的是,我能够关闭确认,而不是在图书馆呼叫确认的情况下。