【发布时间】:2018-10-14 08:08:10
【问题描述】:
我正在使用spring boot来解码jms消息
配置
@Bean
public JmsListenerContainerFactory<?> myFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
// This provides all boot's default to this factory, including the message
// converter
configurer.configure(factory, connectionFactory);
factory.setMessageConverter(this.jacksonJmsMessageConverter());
// You could still override some of Boot's default if necessary.
return factory;
}
@Bean // Serialize message content to json using TextMessage
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setObjectMapper(new ObjectMapper());
return converter;
}
我能够接收到消息并解码消息
@JmsListener(destination = "myQueue", containerFactory = "myFactory")
public void receiveMessage(ActiveMQTextMessage msg) throws JMSException, IOException {
String text = msg.getText();
ObjectMapper mapper = new ObjectMapper();
MyObject obj = mapper.readValue(text, MyObject.class);
我的问题是我不想每次都调用 mapper.readValue(xxx),我更喜欢 在 messageconverter bean 中配置映射器和转换,我的关键 是从转换器调用 msg.getText() ,但我如何获得参考 转换器中的味精,或者有更聪明的方法来做到这一点。
【问题讨论】:
标签: spring spring-boot jms activemq