完成 jms:listener 迁移到 JavaConfig [英] complete jms:listener migration to 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(参见 ref
和 method
属性)
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屋!