2009-02-12 1 views
2

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

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

+0

Какую версию MQ вы используете? –

ответ

0

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

Where the MQMD includes a field that is equivalent to the JMS field, the JMS field is mapped onto the MQMD field. Additional MQMD fields are exposed as JMS properties, because a JMS application may need to get or set these fields when communicating with a non-JMS application.

Вы ищете, вероятно, "JMSXAppID".

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

Также «The administrator indicates that the JMS application is communicating with such an application by setting the TARGCLIENT property of the destination to MQ.»

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

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

+0

Спасибо, но это не работает. Я worte небольшие приложения, которые используют MQ API для java, который помещает hello world messsage в очередь и устанавливает для поля applicationIdData какое-то значение. Тогда у меня есть MDB, который получает сообщение, и ни одно из свойств в сообщении не имеет значения я установил. –

2

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

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

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

1

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

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

Смежные вопросы