[英]Spring Boot JMS MarshallingMessageConverter in replies
我有一个JMS侦听器,类似于在这里完成的侦听器:
它接收XML有效负载。 但与那个不同的是,我还想返回一个答复。 如果我返回一个String,它可以正常工作,但是当我处理消息有效负载时,我想返回一个JAXB对象。
但是,如果我返回一条消息,Spring会尝试使用SimpleMessageConverter转换对象。
转换回复有效负载时,如何配置要使用的MarshallingMessageConverter?
我必须配置DefaultJmsListenerContainerFactory的消息转换器。
但是很奇怪,我已经在其中有一个用于DefaultMessageHandlerMethodFactory和JmsMessagingTemplate的MarshallingMessageConverter,它来自另一个Java包(org.springframework.messaging.converter.MarshallingMessageConverter)。
@Bean
public JmsListenerContainerFactory<?> jmsListenerFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer)
{
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setErrorHandler(errorHandler());
factory.setMessageConverter(jmsMarshallingMessageConverter()); // !!!!
configurer.configure(factory, connectionFactory);
return factory;
}
@Bean
public org.springframework.jms.support.converter.MarshallingMessageConverter jmsMarshallingMessageConverter()
{
Jaxb2Marshaller marshaller = marshaller();
org.springframework.jms.support.converter.MarshallingMessageConverter converter =
new org.springframework.jms.support.converter.MarshallingMessageConverter();
converter.setMarshaller(marshaller);
converter.setUnmarshaller(marshaller);
converter.setTargetType(MessageType.TEXT);
return converter;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.