使用 Websphere MQ 主题 .NET API

问题描述 投票:0回答:1

我读了这篇文章

并且仍然不理解主题在 MQ 中如何工作的概念。 在 JMS 中,我知道您可以在主题上发布消息,并且为了从中接收消息,您首先需要订阅它(在接收阶段使用订阅名称)。

MQ 是如何工作的?我想写一个简单的场景(如在 JMS 中):

  • 1. 发布到主题
  • 2. 从主题接收 - 这将失败(我还没有订阅)
  • 3.订阅
  • 4. 接收 - 由于我在发布后订阅所以没有收到任何东西
  • 5. 发布
  • 6.接收-成功

    示例代码(.NET)会很有帮助

    盖伊

  • .net ibm-mq publish-subscribe mq websphere-7
    1个回答
    8
    投票

    您看过包含的示例代码吗?在默认安装中,它位于:

    C:\Program Files\IBM\WebSphere MQ\tools\dotnet\samples

    MQPubSubSample.cs
    程序说明了托管和非托管代码的持久和非持久订阅。在每种情况下,它首先订阅,然后发布,但您可以轻松地将其修改为问题中所述的发布/订阅/接收/发布/接收的用例。 (不过,您将无法接收来自您尚未订阅的主题的信息。)

    这是示例代码的其中一个部分:

      // Managed/nondurable
      string topicName = DEFAULT_TOPIC_STRING;
      string topicObject = null;
      int openOptionsForGet = MQC.MQSO_CREATE | MQC.MQSO_FAIL_IF_QUIESCING | MQC.MQSO_MANAGED | MQC.MQSO_NON_DURABLE;
      int destType = MQC.MQOT_TOPIC;
    
      try
      { 
        destForGet = mqQMgr.AccessTopic(topicName, topicObject, MQC.MQTOPIC_OPEN_AS_SUBSCRIPTION, openOptionsForGet);
    
        messageForPut = new MQMessage();
        messageForPut.WriteString(DEFAULT_MESSAGE_DATA);
      
        mqQMgr.Put(destType, topicObject, null, topicName, messageForPut);
    
        messageForGet = new MQMessage();
    
        destForGet.Get(messageForGet);
    
        string messageDataFromGet = messageForGet.ReadLine();
    
        if(!DEFAULT_MESSAGE_DATA.Equals(messageDataFromGet))
          Console.WriteLine("Incorrect Message Received.");
    
        destForGet.Close();
      }
      catch(MQException mqE)
      {
        Console.WriteLine("MQException caught. " + mqE.ToString());
      }
    

    您的问题引用了 JMS 作为示例。请注意,您可以选择使用 IBM XMS - 适用于 .Net 的可扩展消息服务客户端。 XMS 通过 .Net 实现 JMS API,使用 WMQ、WMB 或 WAS 作为传输,因此您只需很少的修改即可使用 JMS 代码。 .Net 2.0.0 消息服务客户端手册描述了该产品


    .NET 消息服务客户端
    .NET 消息服务客户端提供了一个称为 XMS 的应用程序编程接口 (API),它具有与 Java 消息服务 (JMS) API 相同的一组接口。 .NET 消息服务客户端包含完全托管的 XMS 实现,任何 .NET 兼容语言都可以使用它。 XMS 支持:

    • 点对点式消息传送
    • 发布/订阅式消息传递
    • 同步消息传递
    • 异步消息传递

    XMS 应用程序可以与以下类型的应用程序交换消息:

    • XMS 应用程序
    • WebSphere MQ JMS 应用程序
    • 本机 WebSphere MQ 应用程序
    • 使用 WebSphere 默认消息传递提供程序的 JMS 应用程序

    XMS 应用程序可以连接到以下任何消息传递服务器并使用其资源:

    • WebSphere MQ 队列管理器 - 应用程序可以以绑定或客户端模式进行连接。
    • WebSphere 服务集成总线 - 应用程序可以使用直接 TCP/IP 连接,也可以使用 TCP/IP 上的 HTTP。
    • WebSphere Event Broker 或 WebSphere Message Broker 的代理 - 使用 WebSphere MQ 实时传输在应用程序和代理之间传输消息,并且根据配置,可以使用 WebSphere MQ 多播传输将消息传送到应用程序。

    通过连接到 WebSphere MQ 队列管理器,XMS 应用程序可以使用 WebSphere MQ Enterprise Transport 与 WebSphere Event Broker 或 WebSphere Message Broker 的代理进行通信。或者,XMS 应用程序可以使用 WebSphere MQ 发布/订阅代理。


    如果您想进一步探索,示例 XMS 代码位于前面提到的本机 .Net 示例下方的子目录中。这些示例在手册的使用 XMS 示例应用程序部分中进行了描述。

    自 v7 起,.Net 支持已集成到 WMQ 中。如果您缺少示例,那么您的 WMQ 客户端安装是后级的或安装不完整。适用于 Windows 的最新 v7.0 WMQ 客户端可作为 SupportPac MQC7 下载。

    XMS 支持作为 SupportPac IA9H 提供。

    © www.soinside.com 2019 - 2024. All rights reserved.