使用Websphere MQ主题.NET API

Guy*_*Guy 6 .net publish-subscribe mq websphere-7 ibm-mq

我读了这篇文章

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

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

  • 1.发布到主题
  • 2.从主题接收 - 将失败(我尚未订阅)
  • 3.订阅
  • 4.接收 - 自我在发布后订阅以来无需接收
  • 5.发布
  • 6.收到 - 成功

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

    家伙

  • T.R*_*Rob 7

    你看过包含的示例代码了吗?在默认安装中,它位于:
    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());
      }
    
    Run Code Online (Sandbox Code Playgroud)

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


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

    • 点对点风格的消息传递
    • 发布/订阅样式消息
    • 同步消息传递
    • 异步消息传递

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

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

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

    • WebSphere MQ队列管理器 - 应用程序可以以绑定或客户端模式进行连接.
    • WebSphere服务集成总线 - 应用程序可以使用直接TCP/IP连接,也可以使用HTTP over TCP/IP.
    • 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客户端安装是后台安装或未完全安装.最新的v7.0 WMQ Client for Windows可以下载为SupportPac MQC7.

    XMS支持以SupportPac IA9H的形式提供.