0

我正在尝试诊断和解决可能存在的环境问题。我们有开发、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

谢谢!

4

1 回答 1

0

该问题已确定是由 Oracle 数据库问题引起的。已退回数据库实例以解决该问题。最有可能的是,数据库性能太慢,导致消息确认出现时间问题。

于 2011-08-23T17:59:12.110 回答