Я использую Spring и Jaxb для прослушивания JMSQueue, а затем unmarshall JMS-сообщения в java-объект. Затем я ожидаю получить этот объект Java на моей конечной точке @JmsListener. Но вместо этого я получаю объект TextMessage. Используя отладчик, я могу пройти через код и увидеть, что происходит переход к объекту java, но он никогда не доходит до конечной точки.Как получить мой преобразованный объект с помощью @JmsListener
Вот мой конфиг:
@Bean
public DefaultJmsListenerContainerFactory myContainerFactory() {
DefaultJmsListenerContainerFactory factory =
new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactoryProxy());
factory.setDestinationResolver(destinationResolver());
factory.setMessageConverter(messageConverter());
factory.setConcurrency("1-1");
return factory;
}
@Bean
public MessageConverter messageConverter(){
MarshallingMessageConverter converter = new MarshallingMessageConverter();
Jaxb2Marhsaller jaxbMarshaller = new Jaxb2Marhsaller();
jaxbMarshaller.setPackagesToScan("mypackage.jms.model");
converter.setUnmarshaller(jaxbMarshaller);
converter.setMarshaller(jaxbMarshaller);
return converter;
}
And my endpoint:
@Component
public class QueueMessageReceiver {
@JmsListener(containerFactory = "myContainerFactory", destination = "jms/Queue")
public void process(Message message) {
try {
System.out.println(message);
}catch(Exception e){
e.printStackTrace();
}
}
}
Проблема заключается в том, что метод QueueMessageReceiver.process имеет TextMessage и не преобразованный объект. Помощь будет принята с благодарностью.
Измените метод обработки вместо 'Message' использовать тип объекта, который вы ожидаете. –