【问题标题】:Is it possible to setup an IBM MQ reciever channel to recieve messages from two different queue managers是否可以设置 IBM MQ 接收器通道来接收来自两个不同队列管理器的消息
【发布时间】:2019-02-26 18:52:06
【问题描述】:

是否可以设置一个 IBM MQ 接收器通道来接收来自两个不同队列管理器的消息,并且发送器通道的名称相同。我正在研究客户希望有两个队列管理器(A 和 B)能够将消息发送到同一个目标队列管理器(C)的情况。 A 和 B 设置在没有共享存储的主动/被动集群设置中。

【问题讨论】:

    标签: ibm-mq


    【解决方案1】:

    不仅可以设置 IBM MQ Receiver 通道来接收来自两个不同队列管理器的消息,建议这样做。

    例如,在 QM3(接收队列管理器)上进行以下定义:

    DEFINE CHANNEL(TO.QM3) CHLTYPE(RCVR) TRPTYPE(TCP)
    

    然后在 QM1 和 QM2 上做出以下定义:

    DEFINE CHANNEL(TO.QM3) CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('qm3-host-name(qm3-port)') XMITQ(QM3)
    DEFINE QLOCAL(QM3) USAGE(XMITQ)
    

    这样做不会导致序列号问题,因为每个正在运行的接收器通道实例的状态都与通道名称和合作伙伴队列管理器名称无关,因此会有以下状态:-

    • 频道:来自合作伙伴 QMgr QM1 的 TO.QM3
    • 频道:来自合作伙伴 QMgr QM2 的 TO.QM3

    两个通道实例可以非常愉快地同时运行,而不会相互干扰。

    您可以通过在接收队列管理器 QM3 上发出以下命令来查看此状态:-

    DISPLAY CHSTATUS(TO.QM3)
    

    【讨论】:

    • 这个配置是否在 KC 中的任何地方注明?唯一性是否仅来自 SDR qmgr 名称?例如,如果有一个 SDR 可以指向具有不同 QM 名称的两个不同 QM 上的相同 RCVR 通道名称(例如 DNS 名称或 IP 在负载均衡器后面),是否会导致 seq num 问题?
    • @JoshMc - 不支持将一个 SDR 指向两个不同 QM 上的 RCVR(即通过负载平衡 IP)。如果通道不确定地结束,它必须连接到与先前相同的队列管理器以解决不确定的批处理。这就是为什么不支持在 SDR-RCVR 通道之间放置 F5 的原因。但这不是 OP 询问的主题。
    • Morag,感谢您提供额外信息并确认您所描述的相反操作无效。过去我们曾尝试过类似的“反向”设置,只是目标 RCVR 通道位于两个具有相同名称的队列管理器实例上,我希望可能基于您的描述,如果 RCVR QM 具有不同的名称,则唯一性可能来自RCVR QM 名称也是如此。您是否知道 KC 是否显示了多个 SDR 到单个 RCVR 设置的示例,这是我想阅读的更多内容,这在未来可能会有用。感谢您的精彩回答!
    • @JoshMc - 此链接 (ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.con.doc/…) 提到了通用接收器。
    • @JoshMc - 当然,整个 MQ 集群都是基于这个模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多