0

我试图诊断和修复可能是环境问题。我们有dev,SI和生产服务器,并且它们已经建立了几年。其中一个环境已停止为特定的JBM队列工作,至今我一直无法弄清楚原因。JBoss消息队列卡住,远程接口和MDB消费者

我通过JMX控制台看到的是消息在交付状态中“卡住”。每次通过队列发送消息时,MessageCount和DeliveringCount递增。消费者的onMessage()被调用,它将调试消息输出到log4j日志中,但我认为它不会完成请求。

这是一个持久的JBM设置。重新启动JBoss服务器没有帮助。清除或甚至删除JBM_ *表不会有帮助。

jbm_msg_ref条目具有空的transaction_id,并且状态为'C',这似乎是通过我们使用的oracle-persistence-service.xml中的准备语句“ROLLBACK_MESSAGE_REF2”将其置于此状态。

MDB消费者的MaxPoolSize是15,这也是消费者实例接收的消息的最大数量。 15之后,似乎队列“填满”,并且不再有任何可用的消费者MBeans接收消息。

我在寻找关于如何诊断和解决问题的想法或建议。我一直在Google上搜索并试用了几天,结果很少。这个相当旧版本的JBM有很多JIRA票据,但其他相同设置的实例工作正常,所以我怀疑在这个服务器/数据库组合中存在某种网络,竞态条件或env问题。

的JBoss Remoting的4.3.0.GA 的JBoss Messaging 1.4.0.SP3 JBoss的4.3.0.GA

谢谢!

回答

0

该问题被确定为由Oracle数据库问题引起。数据库实例被退回来解决问题。数据库性能很可能很慢,导致消息确认的时间问题。