Публикация/подписка MessageBroker + основы MQ

Я был бы очень признателен за помощь в разработке простого потока публикации/подписки с использованием брокера сообщений 7.0 и MQ 7.0.

Мой поток должен принимать определенное сообщение без заголовка, фильтровать его на основе поля (обрабатывать, если значение «да»), а затем публиковать тело во всех очередях, перечисленных в узлах сообщения.

<pub>
  <header>
       <topics>
           <topic> Topic1  </topic>
           <topic> Topic2  </topic>
       </topics>

       <properties>
          <property>
                          <publish>yes</publish>
                  </property>     
           </properties>
   </header>

   <body>  
      <a>
         <b>The publication </b>
      </a>
   </body> 
</pub>

Это мой поток:

поток сообщений

Я зарегистрировал тему и подписку в MQ, но я почти потерял, что мне делать дальше. Я использовал RFHUtil для тестирования двухточечного приложения, но понятия не имею, как его использовать при разработке публикации-подписки.

вопросы: 1. Правильно ли использовать в качестве издателя только простую очередь (во входе MQ я просто установил "IN", очередь у меня есть в MQ) 2. Как мне зарегистрировать подписчика/несколько подписчиков в этом потоке? Что такое точка подписки?

Это просто учебная задача.

Любая помощь приветствуется!


person tania    schedule 16.01.2013    source источник


Ответы (1)


Для обычного pub-sub потока у вас может быть что-то вроде следующего:

Пример потока

Установите имя очереди узла MQInput для вашей входной очереди. Назовем его «inputQ».

Теперь сообщение было прочитано узлом MQInput из «inputQ» и передано на вычислительный узел.

В вычислительном узле вам необходимо установить тип сообщения для публикации, а также установить имя темы, прежде чем передать его узлу публикации.

Вы можете использовать приведенный ниже код для того же:

SET OutputRoot.MQRFH2.psc.Command = 'Publish';
SET OutputRoot.MQRFH2.psc.Topic = 'YourTopicString';

"Как зарегистрировать подписчика/несколько подписчиков в этом потоке?"

Я предполагаю, что ваша проблема заключается в том, «Как опубликовать сообщение с разными темами из одного потока».

Теперь предположим, что у вас есть несколько тем для публикации из одного и того же потока. Вы не можете сделать все сразу. Одно сообщение может иметь одну тему.

Но вы можете добиться этого, как показано ниже (предположим, у вас есть 3 темы):

SET OutputRoot.MQRFH2.psc.Command = 'Publish';
SET OutputRoot.MQRFH2.psc.Topic = 'Topic1';
PROPAGATE TO TERMINAL 'out' DELETE NONE;
SET OutputRoot.MQRFH2.psc.Topic = 'Topic2';
PROPAGATE TO TERMINAL 'out' DELETE NONE;
SET OutputRoot.MQRFH2.psc.Topic = 'Topic3';
PROPAGATE TO TERMINAL 'out' DELETE NONE;
RETURN FALSE;

Однако, если ваше требование заключается в публикации одной темы, но несколько очередей должны ее подобрать, тогда это проще.

Вам просто нужно создать подписки для всех этих очередей по вашей теме.

person nitgeek    schedule 16.01.2013
comment
Можно ли опубликовать сообщение без MQInput? Например: APIRest -> ComputeNode -> Публикация - person Bruno; 20.07.2017
comment
@Бруно Да, конечно. Просто убедитесь, что вы создаете правильные заголовки MQ перед публикацией. - person nitgeek; 26.07.2017