JBoss 消息队列卡住,带有远程接口和 MDB Consumer
我正在尝试诊断并解决可能存在的环境问题。我们有开发、SI 和生产服务器,多年来它们的设置都是一样的。其中一个环境已停止为特定 JBM 队列工作,到目前为止我还无法找出原因。
我通过 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 之后,队列似乎“填满”,并且不再有任何可用的消费者 MBean 来接收消息。
我正在寻找有关如何诊断和解决问题的想法或建议。我已经用谷歌搜索并尝试了几天,但收效甚微。对于这个相当旧的 JBM 版本,有很多 JIRA 票证,但相同设置的其他实例工作正常,因此我怀疑这台服务器/数据库组合上存在某种网络、竞争条件或环境问题。
JBoss 远程处理 4.3.0.GA JBoss 消息传递 1.4.0.SP3 JBoss 4.3.0.GA
谢谢!
I am trying to diagnose and fix what is likely an environmental problem. We have dev, SI, and production servers, and they have been setup the same for several years. One of the environments has stopped working for a particular JBM Queue, and I have so far been unable to figure out why.
What I am seeing via the JMX Console is that the messages are "stuck" in the delivering state. The MessageCount and DeliveringCount increment each time a message is sent through the Queue. The Consumer's onMessage() is invoked, and it outputs debug messages into the log4j log, however I don't think it ever completes the request.
This is a persisted JBM setup. Restarting the JBoss Server doesn't help. Clearing out or even dropping the JBM_* tables does not help.
The jbm_msg_ref entries have null transaction_id's and the state is 'C', which seems like it was put into this state by the prepared statement "ROLLBACK_MESSAGE_REF2" from the oracle-persistence-service.xml we use.
The MaxPoolSize for the MDB consumer is 15, and this is also the max amount of messages that are received by the consumer instances. After 15, it seems that the Queue "fills up" and there are no longer any available consumer MBeans to receive messages.
I am looking for ideas or suggestions about how to diagnose and fix the problem. I've been googling and trying stuff for a few days with little results. There are plenty of JIRA tickets for this fairly old version of JBM, but other instances of the same setup work fine, so I suspect that there is some sort of network, race condition, or env issue on this one server/DB combo.
JBoss Remoting 4.3.0.GA
JBoss Messaging 1.4.0.SP3
JBoss 4.3.0.GA
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
经确认,该问题是由 Oracle 数据库问题引起的。数据库实例被退回以解决该问题。最有可能的是,数据库性能太慢,导致消息确认出现计时问题。
The issue was identified to be caused by Oracle database issues. The database instance was bounced to resolve the issue. Most likely, the database performance was slow enough to have caused a timing issue with message acknowledgement.