Чтение и запись сообщений в MQ из WAS Liberty

Мы пытались отправить MAP (java.util) с использованием шаблона JMS, но на стороне клиента мы не можем прочитать сообщение, и во время запуска сервера Spring Boot @JMSListener жалуется на следующее сообщение, это отлично работает с WAS 7 но не с WAS Liberty 8.5.5, iam также включает фрагмент кода, а также различные форматы сообщений, которые мы получаем для разных версий сервера. Изменилось ли что-нибудь в WAS Liberty?

БЫЛА СВОБОДА - 7 -

at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:116) ~[spring-messaging-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
2019-07-05T13:07:14.357-05:00 [APP/PROC/WEB/0] [OUT] at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:114) ~[spring-jms-5.1.3.RELEASE.jar!/:5.1.3.RELEASE]
2019-07-05T13:07:14.357-05:00 [APP/PROC/WEB/0] [OUT] ... 10 common frames omitted
2019-07-05T13:07:14.393-05:00 [APP/PROC/WEB/0] [OUT] 2019-07-05 18:07:14.370 WARN 20 --- [enerContainer-1] o.s.j.l.DefaultMessageListenerContainer : Execution of JMS message listener failed, and no ErrorHandler has been set.
2019-07-05T13:07:14.394-05:00 [APP/PROC/WEB/0] [OUT] org.springframework.jms.listener.adapter.ListenerExecutionFailedException: Listener method 'public void com.aa.amps.base.task.finalize.BaseBowUpdateListener.receiveMessage(javax.jms.MapMessage)' threw exception; nested exception is org.springframework.jms.support.converter.MessageConversionException: Could not find type id property [_type] on message [ID:414d51204d454d5154433120202020205ccc4b2725acdc4c] from destination [null]

сообщение КАРТА

 jmsTemplate.convertAndSend(destination, message, new MessagePostProcessor() {
                    @Override
                    public Message postProcessMessage(Message message) throws JMSException {
                        message.setJMSReplyTo(null);
                        LOGGER.info("In BaseBowUpdateSender - send() message to AMPS-BASE QUEUE : {} ", message);
                        return message;
                    }
                });

WAS - формат сообщения LIBERTY

JMSMessage class: jms_text
  JMSType:          null
  JMSDeliveryMode:  2
  JMSDeliveryDelay: 0
  JMSDeliveryTime:  0
  JMSExpiration:    0
  JMSPriority:      4
  JMSMessageID:     ID:414d51204d454d5154433120202020205ccc4b272634ce4d
  JMSTimestamp:     1562784513140
  JMSCorrelationID: null
  JMSDestination:   null
  JMSReplyTo:       null
  JMSRedelivered:   true
    JMSXAppID: jar                         
    JMSXDeliveryCount: 193
    JMSXUserID: apmqstc     
    JMS_IBM_Character_Set: UTF-8
    JMS_IBM_Encoding: 273
    JMS_IBM_Format: MQSTR   
    JMS_IBM_MsgType: 8
    JMS_IBM_PutApplType: 28
    JMS_IBM_PutDate: 20190710
    JMS_IBM_PutTime: 18483314
<map><elt name = "trackType">03</elt><elt name = "lastDefferDate">07/10/2019</elt><elt name = "packageDesc ...

Ожидаемое сообщение ниже

JMSMessage class: jms_map
  JMSType:          null
  JMSDeliveryMode:  2
  JMSDeliveryDelay: 0
  JMSDeliveryTime:  0
  JMSExpiration:    0
  JMSPriority:      4
  JMSMessageID:     ID:414d51204d454d5154433120202020205ccc4b272634404a
  JMSTimestamp:     1562783439854
  JMSCorrelationID: null
  JMSDestination:   queue://- INFO IS THERE 
  JMSReplyTo:       null
  JMSRedelivered:   false
    JMSXAppID: WebSphere MQ Client for Java
    JMSXDeliveryCount: 1
    JMSXUserID: apmqstc     
    JMS_IBM_Character_Set: UTF-8
    JMS_IBM_Encoding: 273
    JMS_IBM_Format: MQSTR   
    JMS_IBM_MsgType: 8
    JMS_IBM_PutApplType: 28
    JMS_IBM_PutDate: 20190710
    JMS_IBM_PutTime: 18303986

Я не знаю ничего в Liberty по сравнению с традиционным WAS, что было бы актуально. Отображаемое содержимое сообщения будет генерироваться клиентским приложением, которое в этих двух случаях будет отличаться. JMSXAppID в ожидаемом выводе говорит WebSphere MQ Client for Java, а в фактическом — jar. Я бы предложил проверить, что приложение, отправляющее сообщение, отправляет JMS MapMessage.

Alasdair 11.07.2019 14:34

Спасибо, мы действительно отправляем сообщения MAP, но мы устанавливаем targetClientId как «mq», что фактически добавляет к сообщению информацию, связанную с mq, с некоторыми дополнительными заголовками, после удаления targetClientId добавляется информация JMS, и сообщения отправляются как JMSMapMessage ( jms_map) и т.д. Проблема решена

Sandeep 12.07.2019 16:18

Вы должны опубликовать ответ для себя, чтобы объяснить шаги для решения.

JoshMc 13.07.2019 20:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
782
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сообщения WebSphere MQ помещаются моим приложением (приложением JMS) в очередь. Эти сообщения должны быть получены приложением jms. Я неправильно понял доступную опцию targetClientId, думая, что targetClientId нужно упоминать как «mq», если сообщения, в которых мы пишем, являются MQ, но это не так. Нам нужно установить targetClientId как MQ, только если мы сообщения обрабатываются не- JMS-приложение. Поскольку я устанавливал targetClientId как «MQ», он удалял заголовки RFH, необходимые для обработки сообщения JMS-приложением, и синтаксический анализ не выполнялся в приложении-потребителе.

        <jmsQueue id = "MYAPP_QUEUE" jndiName = "jms/test/testq">
            <properties.wmqJms 
                baseQueueName = "MYAPP.TEST.A" 
                persistence = "PERS" 
                targetClient = "MQ"/> -- removed this 
        </jmsQueue>

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