【问题标题】:How to add MessageConverter on Spring boot Messaging如何在 Spring Boot Messaging 上添加 MessageConverter
【发布时间】:2016-02-12 06:42:21
【问题描述】:

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

@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 添加自己的消息转换器

【问题讨论】:

    标签: java spring spring-boot messaging


    【解决方案1】:

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

    @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 并将其分配给它为您自动创建的默认工厂。

    【讨论】:

    • 如果我想拥有多个连接工厂,我是否需要进行任何更改?和具有多个转换器的连接工厂
    • 通过此设置,@JmsListener(connectionFactory="someListerFactoryThatShouldHaveCusomMessageConverter") 时未检测到我的“CusomMessageConverter()”。我必须明确连接并使用转换器。有什么指点吗?
    • 是的。您使用的是自定义工厂,而不是 Spring Boot 为您自动配置的默认工厂。也许您可以为它创建一个单独的问题?
    猜你喜欢
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多