Ibm mq 远程队列管理器别名未按预期工作

Ibm mq 远程队列管理器别名未按预期工作,ibm-mq,Ibm Mq,我在三个系统上设置了MQ7.0:A、B和C。A->B有发送方-接收方通道(A.B),B->C有发送方-接收方通道(B.C)。传输队列名称相同。队列管理器的名称分别为QMA、QMB和QMC。 现在我在系统C上有一个队列QC。 我已将系统a上的远程队列定义定义为: 定义qremote(RQ)rname(QC)rqmname(third)xmitq(A.B) 我在系统B上有一个定义为远程队列管理器的定义: 定义qremote(第三个)rname(“”)rqmname(QMC)xmitq(B.C) 现在

我在三个系统上设置了MQ7.0:A、B和C。A->B有发送方-接收方通道(A.B),B->C有发送方-接收方通道(B.C)。传输队列名称相同。队列管理器的名称分别为QMA、QMB和QMC。 现在我在系统C上有一个队列QC。 我已将系统a上的远程队列定义定义为: 定义qremote(RQ)rname(QC)rqmname(third)xmitq(A.B)

我在系统B上有一个定义为远程队列管理器的定义: 定义qremote(第三个)rname(“”)rqmname(QMC)xmitq(B.C)

现在,当我将消息放入a上的远程队列RQ时,我所期望的是,它应该通过系统B上的tx队列(a.B)上的通道,通过传输头“第三个队列上的QC”传输到系统B…因为第三个队列别名为QMC,所以该消息应该放入tx B.C,并且应该到达系统C上的队列QC。 但当我把信息放进去后,它就丢失了。我对远程队列管理器别名的理解有误。有人能举个更好的例子吗。

试试这个:

在QMA上

DEF QR(QMC) RQMNAME(' ')   RNAME(' ') XMITQ(QMB)
DEF QR(QC)  RQMNAME('QMC') RNAME(' ') XMITQ('QMB')
DEF QL(QMB) USAGE(XMITQ) TRIGTYPE(FIRST) TRIGGER
* Channel def goes here
QRemote是QMgr别名。它指定QMC通过QMB XMitQ的路径。一旦定义了它,任何发送给QMC的内容都将解析为QMB XMitQ。空白>代码> rNe> 和<代码> RQMNEX/COD>这是一个QMGR别名,而不是一个经典的远程队列定义。此时,如果您使用类似Q程序的工具,该工具允许您指定要连接到的QMgr,而不是用于
OPEN
命令的QMgr,那么您甚至不需要
QRemote
。任何发送到QMC的mesage现在都将解析为QMB

然而,如果您想使用一些不太复杂的东西,比如
amqsput
,那么您确实需要一个QRemote。
defqr(QC
实现了这一点。如果您愿意使用QRemotes,那么您并不真正需要QMgr别名。这只是说“如果有人打开了一个名为
QC
的队列,请将其发送到
QMC
上的
QC
并将其放在
QMB
XMitQ上

在QMB上

DEF QL(QMC) USAGE(XMITQ) TRIGTYPE(FIRST) TRIGGER
* Channel def goes here
在QMB上,当MSSAGE发送至QMC时,它们将自动解析为XMitQ,而无需任何进一步的定义或指导

在QMC上

DEF QL(QC)
最后,消息到达QMC上,并发送给QC,因此您需要一个QLocal,以便它们登录

名称解析有点复杂,但一旦您理解了它,您就基本了解了WMQ寻址。我建议您坐下来,重新考虑您看到的行为


顺便说一句,您的定义中的差异似乎是您的QRemote使用了通道的名称而不是XMitQ。在某一点上,您说“传输队列名称相同。队列管理器的名称分别为QMA、QMB和QMC。“因此,我希望在B上找到一个名为
QMC
的XMitQ,为QMB.QMC频道服务。但稍后您将QMgr别名定义为
define qremote(third)rname('')rqmname(QMC)XMitQ(B.C)
,它应该是
XMitQ(QMC)

谢谢。您的详细响应总是提供更多信息。但是我仍然有以下疑问:1.在QMB上,您指定配置xmitq。我猜这是传递的示例。在link:-,我尝试执行第二个选项,即使用qmgr别名更改消息流路径。这就是我定义qmgr别名的原因在系统B上:定义qremote(第三个)rname(“”)rqmname(QMC)xmitq(B.C)Pass-thru正在我的设置中工作,但不是这个选项。其次,很抱歉我不清楚,但我命名了我的传输队列,但我的传输队列与通道名称相同,如A.B、B.C。因此不确定您是否仍然看到我当前的配置有任何问题。第三,我想知道您上面提到的QR(QMC)和QR(QC)之间的技术区别。在QR(QC)中def,您的XMITQ为空。是否有打字错误?另外,关于您的语句“Q程序允许您指定要连接的QMgr与用于OPEN命令的QMgr分开,您甚至不需要QRemote”。我已下载了此支持pac,但无法执行您提到的操作。请帮助。哇!很好的捕获。如前所述,
def QR(QMC)
没有列出XMitQ,因此需要前面的QMgr别名。如果我指定了XMitQ,它将是独立的。我将更新它,以方便将来的读者。根据您对XMitQ名称的后续解释,要确定发生了什么,我需要知道“丢失”是什么意思。我希望消息会转到DLQ ordi通常。如果没有DLQ且消息是非持久性的,则WMQ将丢弃它。首先要做的是确保QMB和QMC都定义了DLQ,并且QMgr的DEADQ属性指向它。然后查看消息进入哪个DLQ。您也可以使消息持久化,但如果没有DLQ,它只会使通道转到重新设置试试那些没那么有用的。