Настройка из jms настраиваемого свойства в папке usr mqrfh2

У меня есть многоуровневое приложение, в котором сообщение jms отправляется из JmsTemplate (Spring) в поток WMB. В сообщении jms я мог установить заголовки MQMD, чтобы установить метаинформацию, необходимую для потока WMB, прослушивающего MQQueue.

Что мне еще нужно сделать, и это вызывает у меня проблемы, так это установить настраиваемое свойство / заголовок в сообщении JMS в папке MQRFH2 usr. Я хочу установить там ключ с именем MYKEY со строковым значением.

В сообщении jms я делаю следующее:

message.setStringProperty (WMQConstants.JMS_IBM_MQMD_FORMAT, «MQRFH2»); message.setStringProperty ("MQRFH2.usr.MYKEY", "testvalue");

но я получаю сообщение об ошибке:

JMSCC0049: The property name 'MQRFH2.usr.MYKEY' is not a valid Java(tm) identifier.; nested exception is com.ibm.msg.client.jms.DetailedMessageFormatException: JMSCC0049: The property name 'MQRFH2.usr.MYKEY' is not a valid Java(tm) identifier

Кто-нибудь знает, как установить свойство клиента MQRFH2 usr с именем MYKEY в сообщение jms в папке usr в MQRFH2?

0
0
2 268
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы не устанавливаете наши собственные свойства в папке «jms», а устанавливаете их в папке «usr».

rfh2.setFieldValue("usr", "SomeNum", 123);
rfh2.setFieldValue("usr", "SomeText", "TEST");

Полный пример создания сообщения JMS (MQRFH2) в приложении Java, отличном от JMS, см. Здесь: http://www.capitalware.com/rl_blog/?p=4823

Похоже, что на самом деле речь идет об интерфейсе JMS, поэтому прямого доступа к RFH нет.

user3714601 11.04.2018 19:59

Спасибо за образец, очень простой и полезный для тестирования, поэтому я могу сравнивать чистые jms и клиенты MQ.

Stefano Falconetti 11.04.2018 21:47
Ответ принят как подходящий

На самом деле вам нужно всего лишь это сделать:

message.setStringProperty("MYKEY", "testvalue");

Такой вызов заставит использовать формат «MQRFH2» и создаст свойство «MYKEY» в папке «usr».

Полученная вами ошибка указывает только на то, что имя свойства должно соответствовать правилам именования идентификаторов java, т.е. точки не допускаются.

Спасибо, это совпадает с тем, что я вижу при включении низкоуровневой трассировки: и это должно выполняться API-интерфейсами MQ: RFH ....... � ....... �MQSTR ...... � .. ., <mcd> <Msd> jms_text </Msd> <Type> 1 </Type> </mcd> ... � <jms> <Dst> queue: /// OUTQUEUE </Dst> <Rto> очередь: // QMGR / REPTOQ </Rto> <Tms> 1523399291439 </Tms> <Exp> 1523399311439 </Exp> <Dlv> 1 </Dlv> </jms> ... � <usr> <MESSAGE_TYPE> 1 </ MESSAGE_TYPE> <ReplyToQ> REPTOQ </ReplyToQ> <ReplyToQMgr> QMGR </ReplyToQMgr> <APPLICATION_NAME> MyJmsClient </APPLICATION_NAME> <MYKEY> rO0AB .. </MYKEY>

Stefano Falconetti 11.04.2018 21:22

@caramelleas, если он отвечает на ваш вопрос - примите ответ.

user3714601 12.04.2018 10:58

Другие вопросы по теме