【发布时间】:2016-04-10 15:46:28
【问题描述】:
在使用 dmpmqcfg 命令备份远程队列管理器时,我得到 MQSC 超时等待命令服务器的响应。下面是我正在使用的命令。
dmpmqcfg -m <Queue Manager> -r <remote qmgr> -x all -a -o mqsc > D:\RemoteQueueManagerBackup\RemoteQmgr.txt
在运行此命令之前,我在两个队列管理器端创建了一个服务器和请求者通道,执行时上述命令通道进入运行状态,但无法进行备份。
对于少数队列管理器,它工作正常,而对于少数队列管理器,它不工作。我检查了运行 qmgr 之间的所有属性,其他两者看起来都一样。
更新
名称为队列管理器的 Xmitq 队列在两端定义,例如:队列管理器 A Xmitq 作为 B,对于队列管理器 B Xmitq 作为 A。创建服务器和请求者通道。当命令被触发时,通道进入运行状态。
- 从 dmpmqcfg 返回的任何错误? --- 没有。
- 是否启用了 DLQ 并定义了指定名称的队列? - 是的
- DLQ 两端是否存在消息? - 消息被存储在远程队列管理器死信队列中。
- 两个 QMgrs 之间的通道是否在手动启动时运行(这可能是触发问题而不是名称解析)? - 通道自动运行(启用触发)否
- 与身份验证相关的错误?我们看到的唯一错误是
AMQ9544:消息未放入目标队列。
解释:在处理通道“x.Y”一个或多个 无法将消息放入目标队列,尝试 将它们放入死信队列。队列的位置是 2,其中1是本地死信队列,2是远程 死信队列
行动:检查 DLQ 的内容。每条消息都包含在 描述为什么将消息放入队列的结构,以及 到它最初的地址。也看看以前的错误 消息以查看将消息放入 dlq 的尝试是否失败。这 处理程序的程序标识符 (PDI) 为 '5608(10796)'
已检查远程死信队列原因:
MQRC_PERSISTENCE_NOT_ALLOWED
【问题讨论】:
-
顺便说一句,如果你使用
-o 1line,你可以通过grep通过备份文件找到满足特定条件的对象。例如,如果您想将所有带有CONNAME('1.2.3.4')的频道更改为CONNAME('host.company.com')并使用 1line 格式,那么 grep 就可以了。否则,您必须编写代码来跨多行解析 MQSC。 -
我将一些 xmitq 的 DEFPSIST 更改为否,现在它工作正常。
-
我将所有 xmitq 的 DEFPSIST 值更改为 NO,并且现在对于大多数队列管理器来说它工作正常......但仍然看到其中一些它不工作。 (例如:在所有 25 个队列管理器中,20 个工作正常,5 个不工作)
标签: ibm-mq