同じコネクション内で、または統合 API を使用しているときはセッション内でも、プロデューサとコンシューマを組み合わせることができます。さらに、JMS API では、一時送信先を使用することにより、メッセージング操作用の要求 / 応答パターンを実装できます。
要求 / 応答パターンを設定するために、次のタスクを実行する必要があります。
コンシューマが応答を送信できる一時送信先を作成する。
送信するメッセージで、メッセージヘッダーの JMSReplyTo フィールドをその一時送信先に設定する。
メッセージコンシューマは、メッセージを処理するときに、メッセージの JMSReplyTo フィールドを調べ、応答が要求されているかどうかを判断し、指定された送信先へ応答を送信します。
要求応答メカニズムにより、プロデューサは、応答送信先用の管理対象オブジェクトを設定する必要がなくなり、コンシューマは、要求に対して簡単に応答できるようになります。このパターンは、プロデューサが、続行する前に要求が処理されていることを確認する必要があるときに役立ちます。
図 2–6 に、トピックへメッセージを送信し、一時キュー内の応答を受信する要求 / 応答パターンを示します。
図に示すように、MyTopicPublisher は、 Msg1 を送信先 MyTopic へパブリッシュします。MyTopicSubsriber1 と MyTopicSubscriber2 はメッセージを受信し、MyTempQueue へ応答を送信します。そこから MyTQReceiver が応答を取り出します。このパターンは、たとえば、多数のクライアントへ価格情報をパブリッシュし、順次処理を行うためにその (応答) 命令をキューに入れるアプリケーションに役立ちます。
一時送信先は、一時送信先を作成したコネクションが存在する間だけしか存続しません。どのプロデューサも一時送信先に送信できますが、一時送信先にアクセスできる唯一のコンシューマは、送信先を作成したコネクションと同じコネクションによって作成されたコンシューマです。
要求 / 応答パターンは一時送信先の作成によって決まるので、次の場合にはこのパターンを使用しないでください。
応答が送信される前に、一時送信先を作成したコネクションが終了すると予想される場合。
一時送信先へ持続メッセージを送信する必要がある場合。