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