测试远程 WebSphereMQ 队列管理器

Testing remote WebSphereMQ queue managers

我想设置一组测试来测试 QM 的新安装。他们中的大多数将处于 "remote" 设置中。我希望能够向新 QM 发送消息并收到回复。有什么方法可以只使用正常配置(即不使用出口)来制作 "loop" 吗?

我可以想出几种方法来做到这一点。这取决于您是否要在远程系统目标队列中包含 MQPUT 和 MQGET。

  • 将目标队列定义为再次指向原始系统的 QREMOTE,并将真正的 QLOCAL 作为返回原始系统的最终目的地。
  • 当消息到达远程系统上的真实 QLOCAL 队列时,使用 SupportPac MA01(Q 程序)之类的东西回显消息。 -e 选项让您将消息回显到 ReplyToQ 和 ReplyToQMgr 字段。

我的前雇主是一家银行,我们在清算方面有很多联系 房屋和其他供应商。在其中的许多问题上,我能够让业务合作伙伴在他们的一端设置环回队列。这些包括我的 QMgr 上的 QRemote,它指向另一侧的 QRemote,它指向我这边原始 QMgr 上的 QLocal。当消息 PUT 到达 QRemote 时,它​​流向另一侧,落在 QRemote 上,然后被定向回 QLocal。

如果消息没有返回,我们将启动我们的入站通道(在我们这边被定义为 RQSTR)。如果这导致通道启动并且消息到达,那么我们就知道另一端的通道启动器已关闭,但至少我们可以保留通道 运行 直到它被修复。但如果这不起作用,我们知道除了频道触发之外,他们方面还有一些问题。

而且,是的,这是生产。我们认为非事务性检测消息在生产环境中是有效的。就我们而言,这与 ping 或集群控制消息相同。当然,我们有一个网络屏幕和其他工具来启动它们,因此该实用程序的使用受到控制并被记录下来。

有类似的方法使用 QMgr 别名,这可以大大减少大型网络中所需的环回队列数量。不要试图这样做!当我们使用指定完全限定目的地的 QRemotes 时,它们所能做的就是在规定的队列上发送和接收环回消息。但是,如果在没有 RQNAME 的情况下使用 QRemote,那么它可以用于将消息发送到相邻 QMgr 上的 any 队列。

假设您有 QMAQMB:

runmqsc QMA
DEFINE QLOCAL(QMB.LOOPBACK) REPLACE
DEFINE QREMOTE(QMB.LOOPBACK.RMT) +
       XMITQ(QMB) +
       RQMNAME(QMB) +
       RNAME(QMB.QMA.LOOPBACK.RMT) +
       REPLACE
END

runmqsc QMB
DEFINE QREMOTE(QMB.QMA.LOOPBACK.RMT) +
       XMITQ(QMA) +
       RQMNAME(QMA) +
       RNAME(QMB.LOOPBACK) +
       REPLACE

现在您可以转到托管 QMA 的服务器并执行:

echo Hello World | amqsput QMB.LOOPBACK.RMT QMA

请注意,QMB 上的环回反射器的名称中包含 个 QMgr 名称。这是因为您可能希望从两侧设置环回并且不能使用 QMB.LOOPBACK.RMT 作为反射器 来启动环回。在那种情况下,对象清单看起来更像这样:

runmqsc QMA
DEFINE QLOCAL(QMB.LOOPBACK) REPLACE
DEFINE QREMOTE(QMB.LOOPBACK.RMT) +
       XMITQ(QMB) +
       RQMNAME(QMB) +
       RNAME(QMB.QMA.LOOPBACK.RMT) +
       REPLACE

DEFINE QREMOTE(QMA.QMB.LOOPBACK.RMT) +
       XMITQ(QMB) +
       RQMNAME(QMB) +
       RNAME(QMA.LOOPBACK) +
       REPLACE
END

runmqsc QMB
DEFINE QREMOTE(QMB.QMA.LOOPBACK.RMT) +
       XMITQ(QMA) +
       RQMNAME(QMA) +
       RNAME(QMB.LOOPBACK) +
       REPLACE

DEFINE QLOCAL(QMA.LOOPBACK) REPLACE
DEFINE QREMOTE(QMA.LOOPBACK.RMT) +
       XMITQ(QMA) +
       RQMNAME(QMA) +
       RNAME(QMA.QMB.LOOPBACK.RMT) +
       REPLACE
END

请注意,所有对象都根据远程 QMgr 的名称进行排序。有些人更喜欢像 LOOPBACK.QMB.RMT 这样的名称,以使所有环回队列在对象列表或备份中聚集在一起。

所有这些都是自动化的重要目标,因为对象的名称都可以从 QMgrs 的名称派生。