如何使用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添加自己的消息转换器
答案 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
并将其分配给它为您自动创建的默认工厂。