2017-11-14 15 views
0

IBM JMSに接続するSpring JMSベースのクライアントを開発しています。Spring JMS:マルチコンシューマクライアントのコンフィグレーション

この部分はうまくいきます!

シナリオ:

MQクライアントは、複数の春 "@Components" からの要求を取得することができます。考慮すると、JMSTemplateの「送る」と全く異なる方法である「受信」 -

質問:どのように我々はないだけでその要求に対する成分-1からの応答を共同関係

を?例えば

Aは、要求

BがBに要求-B

どうSpringListenerがAに応答-Aを応答するために知っているだろう、と応答-Bを送信送信しますか?

スプリングは、このようなシナリオを処理するために、すぐに使用できる機能を提供していますか?

ありがとうございます!

サンプルリスナー:

public class MessageReceiver implements MessageListener { 

    @Override 
    public void onMessage(Message message) { 

     if(message instanceof TextMessage){ 
      System.out.println(message.toString()); 
     } 
    } 
} 

サンプル送信者:あなたが送信者

と中のため JmsTemplate.sendAndReceiveでそれを行うことができますJMSReplyToヘッダに基づいて

public class App 
{ 
    public static void main(String[] args) 
    { 

     ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); 
     JmsTemplate jmsTemplate = (JmsTemplate)context.getBean("jmsTemplate"); 

     jmsTemplate.send(s -> s.createTextMessage("TestingAMQ")); 
    } 
} 

答えて

1

リスナーサイドby

public class MessageReceiver implements MessageListener { 

     @Override 
     public void onMessage(Message message) { 
      jmsTemplate.send(message.getJMSReplyTo(), s -> s.createTextMessage("TestingAMQ")); 
      if(message instanceof TextMessage){ 
       System.out.println(message.toString()); 
      } 
     } 
    } 

OR

StringPropertyに基づいて、リスナーまたは条件に応答Message.setStringProperty及び使用セレクタによって送信側にメッセージプロパティを設定すること。

これは 'setPropertyを' のアプローチであることが判明し

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jms/core/JmsTemplate.html#sendAndReceive-org.springframework.jms.core.MessageCreator-

+0

方法 "sendAndReceiveは、"(jmsTemplateドキュメントごとに)対応するための一時的なキューを作成します。 "Message.setStringProperty"は良いアイデアのようですが、メソッドを同期させる必要はありませんか?メソッドが同期されていない限り、新しいスレッドはメソッド内の 'プロパティ'値を変更する可能性があります。 – Deep

+0

もう1つのオプションは、トランザクションを送信+受信することです。しかし、私はこれがどのように実装されるのかはわかりません。 – Deep

+0

sendAndReceiveメソッドへのパラメータとして渡すので、メッセージを送信して指定された宛先から返信を受け取ります(jmsTemplateのドキュメントに従って)。宛先は任意のタイプで、先に作成されます。 –

関連する問題