gpt4 book ai didi

c - Websphere MQ - 多个消费者的主题订阅

转载 作者:行者123 更新时间:2023-12-02 23:52:47 24 4
gpt4 key购买 nike

我有一个订阅 WebSphere MQ 中的主题的微服务。订阅是托管并且持久。我显式设置了订阅名称,以便在从任何微服务故障中恢复后,可以使用它连接回队列。订阅按预期进行。

但我可能必须扩展微服务并运行多个实例。在这种情况下,我最终将有多个消费者关注同一主题。但这里失败并出现错误2429:MQRC_SUBSCRIPTION_IN_USE。我无法运行多个消费者来订阅该主题。注意:一条消息只能发送给其中一个消费者。

有什么想法吗?

IBM Websphere 版本:7.5我使用 C 客户端 API 连接到 MQ。

最佳答案

使用订阅者时,您所描述的内容仅通过 IBM MQ Classes for JMS API 支持。在 v7.0 及更高版本中,您可以使用克隆订阅(这是 JMS 规范的 IBM 扩展),此外,在 MQ v8.0 及更高版本中,您还可以使用共享订阅,它是 JMS 2.0 规范的一部分。通过这两个选项,多个订阅者可以连接到同一订阅,并且只有其中一个订阅者会收到每条已发布的消息。

<小时/>

更新 20170710

根据此 APAR IV96489: XMS.NET DOESN'T ALLOW SHARED SUBSCRIPTIONS EVEN WHEN CLONESUP PROPERTY IS ENABLED ,XMS.NET 也应该支持克隆订阅,但由于存在缺陷,直到 8.0.0.8 或 9.0.0.2 或您请求上述 APAR 的 IFIX 时才支持此功能。

<小时/>

您可以通过将微服务转换为从队列获取而不是订阅主题,来完成与 C 等其他 API 类似的任务。

要将已发布的消息发送到队列,您有两种选择:

  1. 在队列管理器上设置管理订阅。您可以通过几种不同的方式来做到这一点。下面的示例将使用 MQSC 命令。

    DEFINE SUB('XYZ') TOPICSTR('SOME/TOPIC') DEST(SOME.QUEUE)

  2. 创建一个实用程序应用程序,可以打开队列并使用所提供的队列创建持久订阅,该应用程序的唯一目的是订阅和取消订阅所提供的队列,它不会用于消费任何已发布的消息。

<小时/>

使用上述方法,每一条发布的消息只能由一个进程或线程从队列中读取(GET)。

关于c - Websphere MQ - 多个消费者的主题订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43536456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com