【问题标题】:Sending messages to MQOutput node向 MQOutput 节点发送消息
【发布时间】:2015-07-30 06:30:39
【问题描述】:

只是想确认 MQ 将消息传递到 MQOutput 节点的正确方式。最近遇到一个情况,我感到有点困惑。这是场景。

我在 Qmgr,say(A) 上有一个本地队列,它接收来自应用程序的消息,并有一个与该 qmgr(A) 关联的本地代理,并部署了一个消息流,它使用该队列中的消息并将其丢弃到另一个本地(LB) 队列管理器 (B) 上的队列。

要成功地将消息传递给 qmgr(B),我必须这样做

  1. 在 Qmgr(A) 上创建一个远程队列定义,其中传输队列名称与远程队列管理器名称匹配,此处为 (B) MQOutput 节点值设置为,队列-> (A) 上的远程队列定义名称,队列管理器值设置为空白

  2. 仅创建与远程队列管理器名称匹配的传输队列,此处为 (B)。 MQOutput 节点值设置为队列-> 目标本地队列 (L.B) 和队列管理器值设置为 (B)。

当我跟随第一个进程时,注意到消息到达目的地,当我跟随后一个进程时,注意到消息本身就在本地队列中。

当需要将消息投递到“n”个本地队列时,是否需要始终创建“n”个远程队列定义?

请指导我更好地理解这一点。在此先感谢你们每一个人。

【问题讨论】:

    标签: ibm-mq middleware messagebroker


    【解决方案1】:

    没有必要创建 n 个远程队列定义,MQ 很乐意接受在“队列管理器名称”上标记为“队列名称”的输出。

    您在使用方法 2 时说您的消息“在本地队列中”。您必须检查一些事项才能解决此问题。

    • 我假设命名队列 L.B 是在 QMgr B 而不是 QMgr A 上定义的?
    • 我假设消息所在的本地队列是传输队列?
    • 您是否定义了一个通道来从它们停留在的传输队列中读取消息?
    • 您是否启动了应该将消息从传输队列移到 QMgr B 的通道?

    【讨论】:

    • 感谢您对这个莫拉格的建议,现在它的照片很完美。是的,正如您所提到的,它位于传输队列中。为此目的创建的通道使用了与我预期不同的 XMIT 队列。重新指出它使用正确的一个,它现在正在工作。每次我都认为远程队列在这里有用。最终您已经明白,在这种情况下不一定需要远程队列来传递消息。再次感谢。
    • 还有@Morag Hughson,如果我确切知道这是如何工作的,我会非常高兴。我们没有像使用远程队列定义那样明确地将本地队列指向传输队列。但是在这种情况下,MQ 是如何从本地队列中挑选消息到传输队列以将其传递到目的地的呢?再次提前感谢。
    • 队列管理器通过一个称为“队列名称解析”的过程来发现要放置消息的传输队列。如果您使用 QREMOTE 对象,它会在那里查找 XMITQ,如果您直接使用队列名称和队列管理器名称,它会使用同名的传输队列。还有很多其他的案例。阅读有关“队列名称解析”的信息,ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/…
    • 非常感谢@Morag Hughson
    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多