3

タイトルの通り..

この貴重な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);

私は新しい演算子を使用していません。

OK、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およびmethod属性を参照) 。

MessageListenerオブジェクトの代わりに単純な pojo (@Component または @Service) のオプションを使用したい

DefaultMessageListenerContainer API では、この要件または状況を回避する方法はありません。

前もって感謝します..

4

1 に答える 1

6
<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 構成から使用するには、上記のスニペットのようなものを使用します。

于 2014-08-07T05:43:31.237 に答える