测试远程WebSphereMQ队列管理器

时间:2015-07-21 07:00:14

标签: ibm-mq

我想设置一系列测试来测试新的QM安装。他们中的大多数将在一个遥远的"建立。我希望能够向新QM发送消息并收到回复。有没有办法制作一个"循环"只是正常配置(即不使用退出)?

2 个答案:

答案 0 :(得分:5)

我的前雇主是一家银行,我们与清算有很多联系 房屋和其他供应商。在其中许多方面,我能够让业务合作伙伴在他们的最后设置环回队列。这些由我的QMgr上的QRemote组成,指向另一侧的QRemote,它指向我身边的QMgr的QLocal。当消息是PUT到QRemote时,它流向另一侧,降落在那里的QRemote上,然后被引导回QLocal。

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

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

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

我们假设你有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名称。这是因为您可能希望从双方设置lopback,并且不能使用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的名称派生。

答案 1 :(得分:4)

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

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