【问题标题】:converting activemq msg in spring boot在 Spring Boot 中转换 activemq msg
【发布时间】: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


    【解决方案1】:

    Spring 为您执行此操作,因为您已通过 factory.setMessageConverter(this.jacksonJmsMessageConverter()); 配置了 factoryMessageConverter

    所以使用这样的参数:

    @JmsListener(destination = "myQueue", containerFactory = "myFactory")
    public void receiveMessage(MyObject obj) throws JMSException, IOException {
        //do stuff with obj
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      • 2018-03-17
      • 2020-12-29
      • 2020-06-23
      • 2023-02-03
      • 2015-07-27
      • 2016-03-23
      相关资源
      最近更新 更多