如何在 Spring boot Messaging 上添加 MessageConverter

use*_*206 3 java messaging spring spring-boot

如何使用 Spring Boot 为目标定义 MessageConverter?我已经定义了我的消息代理和 JMS 侦听器。

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

}
Run Code Online (Sandbox Code Playgroud)

和我的消息代理

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

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

Ste*_*oll 6

您需要创建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;
}
Run Code Online (Sandbox Code Playgroud)

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

Spring Boot 1.4 将自动检测您MessageConverter并将其分配给它为您自动创建的默认工厂。