我读了 文章

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

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

  • 1.发布到主题
  • 2.从一个主题接收 - 会失败(我尚未订阅)
  • 3.订阅
  • 4.收到 - 自发布后我订阅以来,没有收到任何东西
  • 5.发布
  • 6.收到 - 成功

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

    伙计

  • 有帮助吗?

    解决方案

    您是否查看了随附的示例代码?在默认安装中,它位于以下位置:
    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使用WMQ,WMB或作为传输的.NET实现JMS API,因此您可以使用几乎没有修改的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事件经纪人或WebSphere消息代理的经纪人 - 使用WebSphere MQ实时运输在应用程序和经纪人之间传输消息,并且根据配置,可以使用WebSphere MQ Multicast Transport将消息传递到应用程序。

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


    如果您想进一步探索,则示例XMS代码位于下面提到的本机.NET样本下方的子目录中。样品在 使用XMS样本应用程序 手册的部分。

    从V7开始,将.NET支持集成到WMQ中。如果您缺少样品,则WMQ客户端安装是背面或不完全安装的。 Windows的最新v7.0 WMQ客户端可下载 支持PAC MQC7.

    XMS支持被交付为 支持PAC IA9H.

    许可以下: CC-BY-SA归因
    不隶属于 StackOverflow
    scroll top