gpt4 book ai didi

spring - 如何使用@JmsListener 获取转换后的对象

转载 作者:行者123 更新时间:2023-12-04 18:02:36 29 4
gpt4 key购买 nike

我正在使用 Spring 和 Jaxb 来监听 JMSQueue,然后将 JMS 消息解码到一个 Java 对象中。然后我希望在我的@JmsListener 端点上获得该 Java 对象。但是我得到了一个 TextMessage 对象。使用调试器,我可以单步执行代码并查看到 java 对象的转换正在发生,但它永远不会到达我的终点。

这是我的配置:

@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 而不是转换后的对象。将不胜感激。

最佳答案

尝试更改处理方法以使用您期望的对象而不是消息

 @JmsListener(containerFactory = "myContainerFactory", destination = "jms/Queue")
public void process(YourAwesomeObject theObject) {
....
}

关于spring - 如何使用@JmsListener 获取转换后的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32621390/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com