【问题标题】:JMS messages moving to DLQ移动到 DLQ 的 JMS 消息
【发布时间】:2014-01-01 05:08:20
【问题描述】:

JMS 消息有时会在不引发任何异常的情况下移至 DLQ。 使用的 Jboss 服务器实例是 4.3.0.GA_CP04_EAP。

我们正在使用一个 MDB 来侦听队列 A 上的传入消息,当它收到任何消息时,它会更新数据库并在一个事务中感应一封电子邮件。事务是 CMT。

现在,正在发生的事情是,有时消息没有被消费者接收,最终进入 DLQ。虽然从 JMX 控制台消息计数中我可以看到该消息曾经到达队列 A,但随后进入 DLQ。

这种情况会间歇性发生,也不会在日志上引发任何异常。

大多数情况下似乎有效的是重新启动服务器。但不知道幕后发生了什么。

**29 天后,同样的问题又回来了。 这遵循一种模式,但随着每次重新启动而变化。 有 2 个集群服务器也可以进行负载平衡,P1 和 P2。 前两封电子邮件由 P1-Email 发送并处理 下一封电子邮件请求转到 P2-已发送的电子邮件 接下来的两封电子邮件由 P1-Email 发送并处理 下一封电子邮件请求转到 P2-未发送电子邮件 并且循环重复

感谢http://leakfromjavaheap.blogspot.in/2013/05/when-dead-letter-queue-becomes-zombie.html提供的有用信息,我找到了解决这个烦人问题的方法

DLQ 侦听器设置为侦听任何传入消息,如果在 DLQ 上找到任何消息,则将它们放回预期目的地。 此外,考虑到任何消息在无限循环中从 DLQ 到 Queue 并返回 DLQ 的情况,设置一个计数器来检查消息之前到达 DLQ 的次数,如果超过限制,则它被放入永久 DLQ(DLQ 为 DLQ)。 从那以后,应用程序一直运行顺利。

【问题讨论】:

    标签: jboss jms message-driven-bean


    【解决方案1】:

    如果你能提供消息到达DLQ时的日志详细信息,最好深入研究这个问题。

    【讨论】:

      【解决方案2】:

      日志不包含任何有用的信息;甚至没有例外给出提示。 最后把本地tx数据源改成xa数据源,成功了。还在想是不是有什么原因。

      【讨论】:

        猜你喜欢
        • 2017-08-09
        • 2020-03-29
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 2023-04-01
        • 1970-01-01
        • 2016-02-21
        • 1970-01-01
        相关资源
        最近更新 更多