Вопрос

Я прочитал это Статья

И все еще не понимал, как работают темы в MQ.В JMS я знаю, что вы можете опубликовать сообщение по Теме, и для того, чтобы получить от него сообщение, вам сначала нужно подписаться на него (используя имя подписки на этапе получения).

Как это работает в MQ?Я хочу написать простой сценарий (как в JMS):

  • 1.Опубликовать в теме
  • 2.Получать из темы - это не удастся (я еще не подписан)
  • 3.Подписка
  • 4.Получать - нечего получать, так как я подписался после публикации
  • 5.Опубликовать
  • 6.Получение - успешное

    Пример кода (.NET) был бы полезен

    Парень

  • Это было полезно?

    Решение

    Вы просмотрели прилагаемый пример кода?При установке по умолчанию он находится по адресу:
    C:\Program Files\IBM\WebSphere MQ\tools\dotnet\samples

    Тот Самый MQPubSubSample.cs программа иллюстрирует как долгосрочные, так и недолговечные подписки на управляемый и неуправляемый код.В каждом случае он сначала подписывается, затем публикует, но вы можете легко изменить его в соответствии с вашим вариантом использования publish / subscribe / receive / публиковать / получать, как описано в вопросе.(Однако вы не сможете получать сообщения из темы, на которую вы еще не подписаны.)

    Вот один из разделов из примера кода:

      // 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 - Extensible Message Service Client для .Net.XMS реализует JMS API поверх .Net с WMQ, WMB или WAS в качестве транспорта, поэтому вы можете использовать JMS-код с очень небольшими изменениями.Тот Самый Клиент службы сообщений для .Net 2.0.0 руководство пользователя описывает предложение:


    Клиент службы сообщений для .NET
    Клиент службы сообщений для .NET предоставляет интерфейс прикладного программирования (API) под названием XMS, который имеет тот же набор интерфейсов, что и Java Message Service (JMS) API.Клиент службы сообщений для .NET содержит полностью управляемую реализацию XMS, которая может использоваться любым .Язык, совместимый с NET.Поддержка XMS:

    • обмен сообщениями в стиле "точка-точка"
    • сообщения в стиле публикации / подписки
    • Синхронная доставка сообщений
    • Асинхронная доставка сообщений

    Приложение XMS может обмениваться сообщениями со следующими типами приложений:

    • Приложение XMS
    • Приложение WebSphere MQ JMS
    • Собственное приложение WebSphere MQ
    • Приложение JMS, использующее поставщика обмена сообщениями WebSphere по умолчанию

    Приложение XMS может подключаться к любому из следующих серверов обмена сообщениями и использовать ресурсы любого из них:

    • WebSphere MQ queue manager - приложение может подключаться либо в режиме привязки, либо в клиентском режиме.
    • Шина интеграции WebSphere service - приложение может использовать прямое соединение TCP / IP или HTTP через TCP / IP.
    • Брокер WebSphere Event Broker или WebSphere Message Broker - Сообщения передаются между приложением и брокером с использованием транспорта WebSphere MQ в режиме реального времени и, в зависимости от конфигурации, сообщения могут доставляться в приложение с использованием многоадресного транспорта WebSphere MQ.

    Подключаясь к WebSphere MQ queue manager, приложение XMS может использовать WebSphere MQ Enterprise Transport для взаимодействия с брокером WebSphere Event Broker или WebSphere Message Broker.В качестве альтернативы приложение XMS может использовать WebSphere MQ Publish / Subscribe broker.


    Если вы хотите изучить подробнее, пример кода XMS находится в подкаталогах под примерами native .Net, упомянутыми ранее.Образцы описаны в Использование примеров приложений XMS раздел руководства.

    Поддержка .Net интегрирована в WMQ начиная с версии 7.Если вам не хватает образцов, значит, ваша установка клиента WMQ выполнена на заднем уровне или установлена не полностью.Последнюю версию клиента WMQ версии 7.0 для Windows можно загрузить как SupportPac MQC7.

    Поддержка XMS предоставляется в виде SupportPac IA9H.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top