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.
我正在尝试诊断并解决可能存在的环境问题。我们有dev,SI和生产服务器,并且它们已经设置了几年。其中一个环境已停止为特定的JBM队列工作,到目前为止我还无法找出原因。
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.
我通过JMX控制台看到的是消息在交付状态中“卡住”。每次通过队列发送消息时,MessageCount和DeliveringCount都会递增。调用Consumer的onMessage(),它将调试消息输出到log4j日志中,但我认为它不会完成请求。
This is a persisted JBM setup. Restarting the JBoss Server doesn't help. Clearing out or even dropping the JBM_* tables does not help.
这是一个持久的JBM设置。重新启动JBoss服务器没有帮助。清除甚至删除JBM_ *表都无济于事。
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.
jbm_msg_ref条目具有null transaction_id,状态为“C”,这似乎是由我们使用的oracle-persistence-service.xml中的预准备语句“ROLLBACK_MESSAGE_REF2”置于此状态。
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.
MDB使用者的MaxPoolSize为15,这也是使用者实例接收的最大消息量。在15之后,似乎Queue“填满”并且不再有任何可用的消费者MBean来接收消息。
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.
我正在寻找有关如何诊断和解决问题的想法或建议。我一直在谷歌搜索和尝试几天没什么结果。这个相当旧版本的JBM有很多JIRA票证,但是同样设置的其他实例工作正常,所以我怀疑在这个服务器/数据库组合中存在某种网络,竞争条件或环境问题。
JBoss Remoting 4.3.0.GA JBoss Messaging 1.4.0.SP3 JBoss 4.3.0.GA
JBoss Remoting 4.3.0.GA JBoss Messaging 1.4.0.SP3 JBoss 4.3.0.GA
Thanks!
谢谢!
1 个解决方案
#1
0
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.
确定该问题是由Oracle数据库问题引起的。数据库实例被退回以解决问题。最有可能的是,数据库性能足够慢,导致消息确认的时间问题。
#1
0
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.
确定该问题是由Oracle数据库问题引起的。数据库实例被退回以解决问题。最有可能的是,数据库性能足够慢,导致消息确认的时间问题。