【发布时间】:2012-11-04 09:04:51
【问题描述】:
我们在 WebSphere MQ v7.0.1.9 队列管理器中设置了BOTHRESH(5)、BOQNAME(USER.ERR)。
当 MDB 在 WebSphere 应用程序服务器 v7 中的容器管理的 TX 中回滚 TX 时,消息将被放置在 DLQ 中,而不是放置在原始队列中。
我查看了 TX 成功回滚的日志。
有人可以帮我吗?
【问题讨论】:
我们在 WebSphere MQ v7.0.1.9 队列管理器中设置了BOTHRESH(5)、BOQNAME(USER.ERR)。
当 MDB 在 WebSphere 应用程序服务器 v7 中的容器管理的 TX 中回滚 TX 时,消息将被放置在 DLQ 中,而不是放置在原始队列中。
我查看了 TX 成功回滚的日志。
有人可以帮我吗?
【问题讨论】:
...消息被放置在 DLQ 中,而不是放置在原始队列中。
设置BOQNAME 和BOTHRESH 会导致QMgr 尝试将消息放入原始队列之外的其他位置。一旦超过BOTHRESH,QMgr 将首先尝试将消息放入BOQNAME 命名的队列中,如果无法放入BOQNAME,则再放入DLQ。只有当这两个都失败时,QMgr 才会将消息放回原始队列,或者如果消息是非持久的,则将其丢弃。
退回到BOQNAME 中指定的队列或DLQ 失败的一些原因是:
DEADQ 属性为空。 BOTHRESH 已设置,但 BOQNAME 未设置。在这种情况下,DLQ 是唯一尝试过的队列。【讨论】:
MCAUSER 或通道安全出口中被覆盖。 DIS CHS(channel name) 在通道运行时会在 MCAUSER 字段中显示 WMQ 用于授权的 ID。如果MCAUSER 为空白,则通道以WMQ 管理员身份运行。如果BOQNAME 和BOTHRESH 都为空并且消息正在登陆DLQ,则不是由于回退处理。 DLQ消息的原因码是什么?