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"));
}
}
方法 "sendAndReceiveは、"(jmsTemplateドキュメントごとに)対応するための一時的なキューを作成します。 "Message.setStringProperty"は良いアイデアのようですが、メソッドを同期させる必要はありませんか?メソッドが同期されていない限り、新しいスレッドはメソッド内の 'プロパティ'値を変更する可能性があります。 – Deep
もう1つのオプションは、トランザクションを送信+受信することです。しかし、私はこれがどのように実装されるのかはわかりません。 – Deep
sendAndReceiveメソッドへのパラメータとして渡すので、メッセージを送信して指定された宛先から返信を受け取ります(jmsTemplateのドキュメントに従って)。宛先は任意のタイプで、先に作成されます。 –