使用Websphere MQ主题.NET API

时间:2010-12-23 10:02:49

标签: .net ibm-mq publish-subscribe mq websphere-7

我读了这个article

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

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

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

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

  • 1 个答案:

    答案 0 :(得分: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());
      }
    

    您的问题以JMS为例。请注意,您可以选择使用IBM XMS - .Net的可扩展消息服务客户端。 XMS通过.Net实现JMS API,WMQ,WMB或WAS作为传输,因此您只需很少的修改就可以使用JMS代码。 Message Service Client for .Net 2.0.0手册describes the offering


    .NET的消息服务客户端
    Message Service Client for .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示例下面的子目录中。样本在手册的Using the XMS Sample Applications部分进行了描述。

    从v7开始,.Net支持已集成到WMQ中。如果您缺少样本,那么您的WMQ客户端安装是后台安装或未完全安装。最新的v7.0 WMQ Client for Windows可以下载为SupportPac MQC7

    XMS支持以SupportPac IA9H提供。