jms 消息不移动 websphere 中的队列

use*_*858 3 java websphere jms ibm-mq

我有一个消息驱动的 bean,它在某些条件下抛出异常。当它抛出异常时,消息不会被处理并放回队列中。根据我对 MQ 和 WAS(Websphere Application Server)的理解,该消息在尝试 x 次后应标记为错误并从队列中删除。这不会发生,消息仍保留在标记为错误的队列中。

我错过了 MQ 和/或 WAS 中配置的哪一部分设置正确?

(MDB 抛出异常的问题不是这里的重点)

谢谢。

T.R*_*Rob 5

在队列中有属性 BOQNAME 和 BOQTHRESH。这些必须设置为消息要重新排队的回退队列的名称以及重新排队消息之前回退次数的阈值。

此外,QMgr 必须能够将消息放入指定队列。问题可能包括队列名称拼写错误、回退队列已满或运行 MDB 的帐户无权将消息放入回退队列。

如果 MDB 检测到有害消息循环并且无处可重新排队消息,它将停止处理。您仍将看到该线程,但您将在队列中丢失一个或多个打开的输入句柄。在这种情况下,必须重新启动应用程序才能恢复它。

避免将系统的 DLQ 用于回退目标。DLQ 是 QMgr 将从另一个无法解析到目标队列的 QMgr 到达的消息放置的地方。这些将附加一个死信标头,而重新排队的 MDB 消息不会。这可能会导致您观看 DLQ 的任何自动化出现问题。因此,建议每个应用程序都有一个不是DLQ的异常队列。

BOQTHRESH 应大于 1 或 2,因为诸如关闭 QMgr 或通道之类的正常操作可能会导致退出。我通常将 BOQTHRESH 设置为 5 或 10,但已经看到有人将其设置得更高。取决于您对重试的容忍度以及回退是否通常是由诸如填充日志范围之类的瞬态条件引起的。