使用IBM MQ重叠MQ Cluster并回复消息传递

时间:2017-08-18 20:06:11

标签: ibm-mq

我有两个群集CLUSMESCLUSHUBS。每个集群都有两个队列管理器。

群集CLUSMES有QMGRS:QMGR1AQMGR1B
群集CLUSHUBS包含QMGRS:QMGR3AQMGR3B

有一个网关QMGR:QMGR2,它构成了重叠,是每个MQ集群中的部分存储库。

请求消息从QMGR1A/B发送到QMGR3A/B QMGR2通过QMGR3A/B充当集群负载均衡到MQRC 2087(这很正常)并且回复是预计回到发送QMGR。

所有渠道连接都已到位并且功能齐全。问题是如何从它来自何处返回消息。回复的QMGR连接到QMGR3A / B并发出一个put。我将找到未找到REMOTE_QMGR(MQRC 2085)或未找到MQ对象(ReplytoQueue),具体取决于我如何配置它。邮件的邮件标头正确包含ReplyToQMgrCLUSMES。我希望回复应用程序只发出一个put并将它传递到QMGR2中的正确队列,但事实证明这非常困难。我在GateWay Qmgr上使用了远程QMGR Alias和QAlias:ReplyToQMgr,但没有运气。必须有一个简单的技巧,并有很多例子,但我没有能够成功实现一个。我的回归路径应该是一个明确的例子将是最有帮助的。请注意,MQMD位于QMGR2,因此需要解决问题。我需要在DEFINE QLOCAL('SERVER.REPLYQ') CLUSTER('CLUSMES') 级别进行解析,其中两个群集都是已知的。具体的建议赞赏。

QMGR1A / B上的MQ定义,其中需要REPLY:

DEFINE NAMELIST(CLUSTEST) NAMES(CLUSMES,CLUSHUBS)

DEFINE QALIAS(SERVER.ALIAS.REPLYQ) TARGQ(SERVER.REPLYQ) CLUSTER(CLUSTEST) DEFBIND(NOTFIXED)

DEFINE QREMOTE(QMGR1A) RNAME(' ') RQMNAME(QMGR1A) XMITQ('') CLUSTER(CLUSHUBS)
DEFINE QREMOTE(QMGR1B) RNAME(' ') RQMNAME(QMGR1B) XMITQ('') CLUSTER(CLUSHUBS)

在QMGR2上(消息希望的网关)

{{1}}

在MQMGR3A / B QALIAS(SERVER.ALIAS.REPLYQ)群集队列中。 Gateway QMGR无法解析baseQ:mqrc_unknown_alias_base_q 2082

尝试使用群集解析时,这是配置。

1 个答案:

答案 0 :(得分:1)

当应用程序发送请求消息时,它将指定ReplyToQMgrQMGR1A QMGR1B的{​​{1}}以及ReplytoQueue上的队列名称{ {1}}和QMGR1A,无需对回复队列进行群集。

在网关队列管理器QMGR1B上,您将定义以下对象:

QMGR2

这将允许群集DEFINE QREMOTE(QMGR1A) RNAME('') RQMNAME(QMGR1A) XMITQ('') CLUSTER(CLUSHUBS) DEFINE QREMOTE(QMGR1B) RNAME('') RQMNAME(QMGR1B) XMITQ('') CLUSTER(CLUSHUBS) 中的任何队列管理器通过网关队列管理器CLUSHUBS将回复消息路由回QMGR1AQMGR1B

如果要限制QMGR2QMGR1A上的队列,QMGR1B群集中的队列管理器可以提供给您,则需要采用不同的方法。如果这是你需要的,请告诉我,我会用一些建议更新我的答案。