完成 jms:listener 迁移到 JavaConfig [英] complete jms:listener migration to JavaConfig

查看:43
本文介绍了完成 jms:listener 迁移到 JavaConfig的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

就像标题所说的..

我已经阅读了这篇有价值的如何在 Spring Java Config 的单个 MessageListenerContainer 中添加多个 JMS MessageListner 链接

I have read this valuable How to add multiple JMS MessageListners in a single MessageListenerContainer for Spring Java Config link

该帖子的作者正在处理

messageListenerContainer.setMessageListener(new TaskFinished());

顺便说一句:我用

@Autowired
private ConsumerListener consumerListener;

defaultMessageListenerContainer.setMessageListener(consumerListener);

我没有使用 new 运算符.

I am not using the new operator.

好的,setMessageListener 方法的限制是:该类必须实现MessageListener 接口,我已经测试并有效

OK, the restriction of the setMessageListener method is: the class must implements the MessageListener interface, I have tested and works

我的问题是,根据 23.6 JMS 命名空间支持

如何表示以下内容:

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

通过JavaConfig?

through JavaConfig?

它们是简单的 pojo(参见 refmethod 属性)

They are simple pojo (see the ref and method attributes)

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

I want use how an option a simple pojo (@Component or @Service) instead of a MessageListener object

DefaultMessageListenerContainer API,没有办法解决这个要求或情况.

In the DefaultMessageListenerContainer API, there is no something to work around this requirement or situation.

提前致谢..

推荐答案

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

这个xml使用了一个MessageListenerAdapter 您可以传递一个委托(ref 和一个要执行的方法(默认为 'handleMessage`).

This xml uses a MessageListenerAdapter which you can hand a delegate (the ref and a method to execute (default '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 配置中使用它,请使用类似上面的代码片段.

To use it from Java config use something like the snippet above.

这篇关于完成 jms:listener 迁移到 JavaConfig的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆