编程语言
首页 > 编程语言> > spring – 完成jms:侦听器迁移到JavaConfig

spring – 完成jms:侦听器迁移到JavaConfig

作者:互联网

就像标题所说..

我已经阅读了这个有价值的How to add multiple JMS MessageListners in a single MessageListenerContainer for Spring Java Config链接

这篇文章的作者正在努力

messageListenerContainer.setMessageListener(new TaskFinished());

顺便说一句:我用

@Autowired
private ConsumerListener consumerListener;

defaultMessageListenerContainer.setMessageListener(consumerListener);

我没有使用新的运算符.

好的,setMessageListener方法的限制是:该类必须实现MessageListener接口,我已测试并正常工作

我的问题是,根据23.6 JMS Namespace Support

如何表示以下内容:

<jms:listener destination="queue.orders" ref="orderService" method="placeOrder"/>
<jms:listener destination="queue.confirmations" ref="confirmationLogger" method="log"/>

通过JavaConfig?

它们是简单的pojo(参见ref和方法属性)

我想使用一个简单的pojo(@Component或@Service)选项而不是MessageListener对象

DefaultMessageListenerContainer API中,无法解决此要求或情况.

提前致谢..

解决方法:

<jms:listener destination="queue.orders" ref="orderService" method="placeOrder"/>

这个xml使用一个MessageListenerAdapter,你可以交给一个委托(ref和一个执行方法(默认’handleMessage`).

@Configuration
public MyJmsConfiguration {

    @Bean
    public DefaultMessageListenerContainer consumerJmsListenerContainer() {

        DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer();
        ...
        MessageListenerAdapter listener = new MessageListenerAdapter();
        listener.setDelegate(orderService());
        listener.setDefaultListenerMethod("placeOrder");
        dmlc.setMessageListener(listener);
        return dmlc;
}

要从Java配置中使用它,请使用类似上面的代码段.

标签:spring-4,spring,spring-3,spring-jms
来源: https://codeday.me/bug/20190825/1714212.html