我们已在 WebSphere MQ v7.0.1.9 队列管理器中设置 BOTHRESH(5)
、BOQNAME(USER.ERR)
。
当 WebSphere 应用程序服务器 v7 中容器管理的 TX 中的 MDB 回滚 TX 时,消息将被放置在 DLQ 中,而不是放置在原始队列中。
我检查了日志,表明 TX 已成功回滚。
有人可以帮助我吗?
最佳答案
...消息被放置在 DLQ 中,而不是放置在原始队列中。
设置 BOQNAME
和 BOTHRESH
会导致 QMgr 尝试将消息放入原始队列之外的位置。一旦超过 BOTHRESH
,QMgr 将首先尝试将消息放入 BOQNAME
命名的队列中,如果放入 BOQNAME
则放入 DLQ不可能。仅当这两者都失败时,QMgr 才会将消息放回到原始队列中,或者如果消息是非持久性的,则将其丢弃。
回退到 BOQNAME
中指定的队列或 DLQ 失败的一些原因是:
- 目标队列不存在。
- 目标队列已满。
- 消息大小超过目标队列的 MAXMSGL 属性。
- 用户无权将消息放入目标队列。
- 目标队列的类型错误(即 XMitQ 或模型队列)。
- 当放入 DLQ 时,QMgr 的
DEADQ
属性为空。 BOTHRESH
已设置,但BOQNAME
未设置。在这种情况下,DLQ 是唯一尝试的队列。
关于jms - WebSphere MQ 回退阈值和回退名称不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403036/