Как установить поле MQMD ApplicationID через JMS API? - PullRequest
2 голосов
/ 12 февраля 2009

Я использую JMS API для отправки сообщений на сервер Websphere MQ. Приложение, которое извлекает сообщения, которые я создаю, хочет, чтобы я настроил поле ApplicationID в структуре MQMD к постоянному значению. Я не смог найти способ в JMS API для доступа к структуре MQMD

Вопрос: есть ли способ сделать это? если да то как? Если нет, то мой единственный вариант такое использование MQ Java API вместо JMS API?

Ответы [ 3 ]

2 голосов
/ 31 марта 2010

Начиная с версии 7.0, вы можете читать все поля MQMD как свойства сообщений JMS и устанавливать многие из них одинаково.

См .: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm41030_.htm

Чтобы использовать эту функцию, клиент и сервер WMQ должны быть версии v7.0 или выше.

1 голос
/ 23 ноября 2011

Поля MQMD могут быть прочитаны из полученного сообщения. Установите свойство MQMDReadEnabled в месте назначения, вызвав метод setMQMDReadEnabled (true).

Затем вы можете прочитать applicationIdentityData, используя метод getStringProperty.

0 голосов
/ 12 февраля 2009

Из документации MQ:

Если MQMD включает в себя поле, эквивалентное полю JMS, поле JMS отображается на поле MQMD. Дополнительные поля MQMD предоставляются в виде свойств JMS, поскольку приложению JMS может потребоваться получить или установить эти поля при обмене данными с приложением, отличным от JMS.

Возможно, вы ищете следующее свойство: " JMSXAppID ".

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

Также " Администратор указывает, что приложение JMS обменивается данными с таким приложением, установив для свойства TARGCLIENT получателя значение MQ. "

Если это не имеет смысла, вы должны создать контрольные примеры, которые помогут вам выяснить, что MQ делает за кулисами. Создайте сообщение JMS, установите для всех свойств некоторые странные значения и отправьте его в неактивную очередь MQ, где вы можете просмотреть его. Таким образом, вы можете выяснить, какие карты полей где.

После того, как это сработает, вы можете попробовать другой способ. Если ваша реализация JMS не позволяет вам получить все свойства сообщения в виде карты или чего-то еще, используйте отладчик Java для просмотра данных в памяти. Field.setAccessible(true) твой друг.

...