【问题标题】:Connect single queue to multiple qmgrs C++将单个队列连接到多个 qmgrs C++
【发布时间】:2015-06-10 23:13:39
【问题描述】:

我想将单个队列连接到多个队列管理器 (至少 2 个 qmgrs)。假设我有qmgrA and qmgrB 作为队列管理器,它连接到queueName。我会将消息 "Hello" 发送到连接到 qmgrA 的 queueName 以及 qmgrB 上的另一条消息 "World"。所以假设 queueName 包含 "Hello""World"

问题是如何同时获取这些消息?您能否给我一个示例代码片段/sn-p,让我至少了解如何开始使用该设计进行编码。

注意: *我要求这样做是因为例如 qmgrA 因未知原因断开/关闭,至少 qmgrB 仍然处于活动状态 即使qmgrA 已断开连接,也会在queueName 上收到消息。

顺便说一句,我使用的是 Websphere MQ v7 C++。

提前致谢! :)

【问题讨论】:

    标签: c++ queue message-queue ibm-mq


    【解决方案1】:

    问题似乎是在询问如何做一些 IBM MQ 不做的事情。 QMgrs 不会“连接”到队列,而是托管它们。除了抽象的 JMS 意义外,应用程序不会“连接”到队列。他们连接到 QMgrs,然后打开队列。但是,MQ 集群、硬件集群、多实例 QMgrs、共享队列(仅在 z/OS 上)或这些的某种组合可以满足所描述的保持 MQ 高可用性的要求。

    您示例中的两个队列管理器每个都托管queueName 的本地副本。以下是关于在这种情况下如何分发消息的几种情况。

    PUTting 消息

    • 默认情况下,由连接到qmgrA 的应用程序发送到queueName 的消息将导致消息登陆该队列的本地实例。
    • 当有一个本地实例和一个至少有一个其他实例的 MQ 集群时,可以将 QMgr 配置为允许消息转到非本地实例。
    • qmgrAqmgrBqmgrC 位于集群中且qmgrC 不托管队列的本地实例时,放入该队列名称的消息将在@ 上的实例之间循环987654331@ 和 qmgrB

    GETting 消息

    • qmgrA 上到达queueName 的消息只能由连接到qmgrA 的应用程序从该队列中检索。
    • qmgrB 上到达queueName 的消息只能由连接到qmgrB 的应用程序从该队列中检索。
    • 连接到qmgrC 的应用程序无法从qmgrAqmgrB 上托管的队列中检索消息。

    MQ 高可用性
    使队列具有高可用性的要求可以通过多种方式实现。其中一些提供了 MQ 提供的服务的可恢复性。其中一些提供了可能在飞行中搁浅的消息的可恢复性。除了阅读手册中的topology design section,请参阅 IBM Interconnect 2015 中的MQ HA presentation

    【讨论】:

    • 嗨@T.Rob,我得到了一个 rc 代码 2219,程序的设计是我们有 2 个线程。一种用于获取消息,一种用于将消息放入/发送到队列。所以我们有 2 个进程同时运行。 get - 将连接到队列管理器,打开队列并有一个无限期地获取消息的循环。 (等待间隔设置为无限制,mqgmo_wait) put - 将连接到同一个队列管理器,打开队列并将消息放入其他队列。我们在使用 rc 代码 2219 打开队列时出现错误。您对如何解决 rc 代码有任何建议吗?
    • 主要建议是 Stack Overflow 不像论坛那样工作。这是一个问答网站。在 cmets 中提出后续问题并不能帮助其他任何人找到它们或从中受益。因为这不是本意,所以 Stack Overflow 很难在评论部分充分回答问题。我建议提出一个新问题。如果我没有看到它并且您想将我引导到它,我的联系信息在我的个人资料中。通过该链接向我发送电子邮件或推特。
    • 此外,通常通过点赞和接受有用的答案,您往往会得到更热情的回应。你的 8 个问题中,只有一个被接受了。除了一个之外,所有答案都有答案,其中许多答案的票数为零。我希望这个建议有助于使 Stack Overflow 对您更有用。
    • 谢谢罗伯。我将发布另一个问题。
    【解决方案2】:

    你的问题确实很有道理。去 MQ 知识中心查找 MQ Clustering 和 MQ Multi-Instance。 http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.con.doc/q017820_.htm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 2018-03-09
      • 1970-01-01
      相关资源
      最近更新 更多