Не видит свойств сообщения, которые я установил явно (Spring / JMS / MQ)

#jms #websphere #ibm-mq #jmstemplate #spring-jms

#jms #websphere #ibm-mq #jmstemplate #spring-jms

Вопрос:

Два отдельных процесса обмениваются данными через JMS через MQ.

Автор задает свойство string:

 new MessageAction() {
    public void actOn(Message message) throws JMSException {
        logger.debug("Setting message property (GmmThreadId, CASHFLOW-1234)");
        message.setStringProperty("GmmThreadId", "CASHFLOW-1234");
    }
});
  

Это MessageAction выполняется, как показано в журналах:

Setting message property (GmmThreadId, CASHFLOW-1234)


Для получения этого сообщения читатель использует селектор сообщений. (используя JmsTemplate v1 от Spring — старую версию, которую я знаю, но она встроена в фреймворк нашего поставщика, и мы вынуждены ее использовать.)

template.receiveSelected(queue, "GmmThreadId = 'CASHFLOW-1234' or GmmThreadId IS NULL");

В очереди находятся только те сообщения, для которых в журналах показано, что автор установил свойство message . В журналах для читателя я перечисляю свойства, а также пытаюсь записать значение GmmThreadId . Это также показывает, что свойство GmmThreadId не существует.

 message property JMS_IBM_PutDate = 20111003
message property JMSXAppID = WebSphere MQ Client for Java
message property JMS_IBM_Format = MQSTR
message property JMS_IBM_PutApplType = 28
message property JMS_IBM_MsgType = 8
message property JMSXUserID = MUSR_MQADMIN
message property JMS_IBM_PutTime = 23551798
message property JMSXDeliveryCount = 2
message had GmmThreadId property of null
  

Обратите внимание, если мой селектор сообщений является единственным "GmmThreadId = 'CASHFLOW-1234'" , тогда ничего не удаляется из очереди.

Используя WebSphere MQ Explorer для просмотра сообщения, я не могу найти нигде, чтобы просмотреть свойства сообщения, заданные приложением. Тип сообщения — MQSTR, если это имеет какое-либо значение.

В WebSphere v6 запущены приложения для чтения и записи.

Где я ошибаюсь?

Ответ №1:

Как указано в этом потоке, свойства сообщения будут подавлены, если тип назначения равен ‘MQ’. Для меня это настраивается в консоли WebSphere App Server. Я изменил тип очереди на ‘JMS’, и свойства сообщения были сохранены.

Комментарии:

1. Также обратите внимание, что инструмент rfhutil.exe в пакете поддержки IH03 позволит просматривать все виды расширенных свойств сообщений.

2. прошло 3 месяца, и я полностью забыл об этом. StackOverflow снова на помощь!