Показаны сообщения с ярлыком Message Broker Toolkit. Показать все сообщения
Показаны сообщения с ярлыком Message Broker Toolkit. Показать все сообщения

понедельник, 8 июля 2013 г.

Message Broker: формирование MQ сообщения для JMS

Периодически возникает задача формирования корректного MQ сообщения, такого, что бы его могло нормально распознать и распарсить приложение написанное на Java и работающее с MQ через JMS (далее просто JavaApp).
Для того, что бы JavaApp могло нормально распознать MQ сообщение необходимо заполнение следующих полей в заголовке сообщения (скрины сделаны из rfhutil):





С параметрами MQ MessageFormat, MessageType и полями в RFH.usr проблем не возникает.
Пример заполнения в коде (обязательные поля выделены жирным):

SET OutputRoot.MQMD.MsgType = MQMT_REQUEST;
SET OutputRoot.MQMD.Format = MQFMT_RF_HEADER_2;
SET OutputRoot.MQMD.Encoding = MQENC_NATIVE;
SET OutputRoot.MQMD.CodedCharSetId = 1208;
SET OutputRoot.MQRFH2.(MQRFH2.Field)Format = MQFMT_STRING;
SET OutputRoot.MQRFH2.jms.Dlv = '2'; -- Желательно указать для того, что бы было заполнено поле MQRFH2.jms
SET OutputRoot.MQRFH2.usr.TargetFunctionName = 'autoFinishCall';

Примечание: поле MQRFH2.usr.TargetFunctionName используется в продуктах IBM Websphere ESB для определения целевой функции и не является обязательным для корректного распознавания JMS-клиентом.

Но для задания Message Domain значения 'jms_text' простая запись вида:
OutputRoot.MQRFH2.mcd.Msd = 'jms_text';
не помогает.
ВНИМАНИЕ: для версии WMB 8.0.0.5 совет из описания ниже уже не актуален, так как все работает в виде
OutputRoot.MQRFH2.mcd.Msd = 'jms_text';

Для этого требуется требуется выполнить следующие действия:

Вставляем в message flow проекта сразу перед 'MQOutput Node' компоненту 'Reset Content Descriptor Node' (Prepare JMS Message на схеме) и заполняем в ней поле Message domain значением 'jms_text'.
Этим мы сбрасываем свойство Message Domain сообщения в необходимое значение.
При необходимости после отправки сообщения снова вставляем компоненту 'Reset Content Descriptor Node'  (Reset to XMLNSC на схеме)  и заполняем в ней поле Message domain значением значением из выпадающего списка, например 'XMLNSC'

Пример:

В этом случае Java JMS клиенты корректно принимают сообщения отправленные из Message Broker.

пятница, 7 июня 2013 г.

Установка IBM WebSphere Message Broker Toolkit V8 на SUSE Linux Enterprise Server 11 SP2 и CentOS 6.6

Продолжаем цикл статей по установке Message Broker на SLES11SP2

Предыдущие части:
Установка IBM Websphere MQ 7.5 на SUSE Linux Enterprise Server 11 SP2 и CentOS 6.6
Установка IBM Websphere MessageBroker 8 на SUSE Linux Enterprise Server 11 SP2 и CentOS 6.6
Настройка ODBC datasource для IBM Websphere Message Broker

Установку будем выполнять в silent-режиме, так как Message Broker Toolkit может быть нужен не только для разработки, но и для сборки проекта из исходников, например при организации сборочного конвейера (об этом планирую написать в следующей статье)

Собственно в установке ничего сложного нет:

Установка Message Broker Toolkit


1) Качаем и распаковываем дистрибутив (три пакета должны быть распакованы в одну папку)
После распаковки должны получиться лежащие рядом три папки (disk1, disk2 и disk3)

2) Заходим в disk1

3) Запускаем процесс инсталляции под root
sudo ./installToolkit-silent.sh

4) Ждем окончания процесса установки

5) Все готово
Toolkit поставился по-умолчанию и /opt/IBM/WMBT800 и доступен в списке приложений SUSE

Обновление Message Broker Toolkit

Теперь поставим последние патчи на Toolkit (я обновлял до 8.0.0.2)
Ставим обновления сразу с сайта IBM, поэтому должен быть доступ к интернет.

1) IBM Installation Manager у нас уже поставился вместе с Toolkit, поэтому идем в папку /opt/IBM/InstallationManager/eclipse/tools
cd /opt/IBM/InstallationManager/eclipse/tools

2) Установку производим в консольном режиме:
sudo ./imcl -c

3) Проходим по всех шагам мастера установки, отвечая на вопросы

4) Дожидаемся окончания установки

5) Готово. Теперь у нас обновленный до последней версии Toolkit.