如何在Spring启动消息传递上添加MessageConverter

时间:2016-02-12 06:42:22

标签: java spring spring-boot messaging

如何使用spring boot为目标定义MessageConverter?我已经定义了我的消息代理和JMS Listener。

@JmsListener(destination = "new.clinic.queue")
public void receiveNewClinic(MyCustomDTO message) {

}

和我的消息经纪人

@Bean
public BrokerService broker() throws Exception {
    BrokerService broker = new BrokerService();
    broker.setBrokerName(brokerName);
    broker.addConnector(brokerAddress);
    return broker;
}

如何为MyCustomDTO添加自己的消息转换器

1 个答案:

答案 0 :(得分:3)

您需要创建JmsMessageContainerFactory并相应地进行配置。 Spring Boot会为您创建一个,但您可以使用自己的自定义创建任意数量的实例,并使用containerFactory注释的@JmsListener引用它们。

@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(
        ConnectionFactory connectionFactory) {
  DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
  factory.setConnectionFactory(connectionFactory);
  factory.setMessageConverter(yourMessageConverter());
  // .. other settings
  return factory;
}

请注意,此处的bean名称是默认名称,因此您无需指定connectionFactory属性。

Spring Boot 1.4将auto-detect your MessageConverter并将其分配给它为您自动创建的默认工厂。