我有两个群集CLUSMES
和CLUSHUBS
。每个集群都有两个队列管理器。
群集CLUSMES
有QMGRS:QMGR1A
和QMGR1B
群集CLUSHUBS
包含QMGRS:QMGR3A
和QMGR3B
有一个网关QMGR:QMGR2
,它构成了重叠,是每个MQ集群中的部分存储库。
请求消息从QMGR1A/B
发送到QMGR3A/B
QMGR2
通过QMGR3A/B
充当集群负载均衡到MQRC 2087
(这很正常)并且回复是预计回到发送QMGR。
所有渠道连接都已到位并且功能齐全。问题是如何从它来自何处返回消息。回复的QMGR连接到QMGR3A / B并发出一个put。我将找到未找到REMOTE_QMGR(MQRC 2085
)或未找到MQ对象(ReplytoQueue
),具体取决于我如何配置它。邮件的邮件标头正确包含ReplyToQMgr
和CLUSMES
。我希望回复应用程序只发出一个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
尝试使用群集解析时,这是配置。
答案 0 :(得分:1)
当应用程序发送请求消息时,它将指定ReplyToQMgr
和QMGR1A
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
将回复消息路由回QMGR1A
和QMGR1B
。
如果要限制QMGR2
和QMGR1A
上的队列,QMGR1B
群集中的队列管理器可以提供给您,则需要采用不同的方法。如果这是你需要的,请告诉我,我会用一些建议更新我的答案。