メッセージ要求応答相関関係子パターン

メッセージ要求応答相関関係子パターンを使用して、多数のクライアント・アプリケーションからの要求を単一キューで受け入れ、正しいクライアントに応答を返します。

パターンの動作を示す図。多数の要求側アプリケーションがブローカーにメッセージを送ります。メッセージがプロバイダーに転送される前に要求側の応答アドレスが保管され、プロバイダーから応答を受け取ったときに復元されます。

コンテキスト

多くの場合、クライアント・アプリケーションはサーバー・アプリケーションにアクセスする必要があります。 中継機能または WebSphere® Message Broker などのエンタープライズ・サービス・バス (ESB) を通すことにより、クライアント・アプリケーションからの要求とサーバーからの応答を仲介することができます。 クライアント・アプリケーションからの要求の中では、応答を受け取るために使われる特定の応答キューが指定されます。

メッセージング・システムは、要求/応答対話における応答メッセージを元のアプリケーションまたはクライアント・インスタンスに適切にルーティングするためのメカニズムを提供します。 このソリューションには、通常、「返信先アドレス」がメッセージ・ヘッダーに含まれて渡されます。 受信側アプリケーションはこの情報を抽出して、適切なキューに応答を送ることができます。 この対話の中にメディエーションが導入された場合、2 つの別個の要求/応答対話が確立されます。 それぞれのケースで応答メッセージが正しい宛先に確実に送られるようにする必要があります。

このような多数のクライアントが 1 つのサーバー・アプリケーションと対話する場合は、通常、1 つのメディエーションだけを使用します。 標準的な手法として、サーバー・アプリケーションとメディエーションはそれぞれ 1 つの要求キューを提供することができます。 さらに、メディエーションは、サーバー・アプリケーションからの応答メッセージを処理するための 1 つの応答キューを使用します。 各クライアントが自身の応答キューを提供する場合、それぞれの応答メッセージを正しいキューに確実に送るためのメカニズムが必要です。

問題

WebSphere Message Broker フローは要求側とプロバイダーの間を仲介します。 着信メッセージには要求側の応答アドレスが含まれますが、プロバイダー・アプリケーションに転送されるメッセージにメッセージ・フローの応答アドレスが含まれる必要があります。 プロバイダー・アプリケーションがメッセージ・フローに応答するときには、それぞれの応答を、クライアントによって送信された要求に一致させる必要があります。

選択についてのガイダンス

このパターンを使用するのは、多数の要求側が 1 つのプロバイダーにメッセージを送って要求側の固有なキューで応答を受け取る必要がある場合、および要求と応答の両方がブローカーによって仲介される場合です。 このパターンを使用して任意の種類のメッセージを渡すことができます。また、例えば不適切にフォーマット設定されたメッセージからプロバイダーを保護する目的で、メッセージの妥当性検査を行うこともできます。

ソリューション

メディエーション・フロー内の各クライアント要求の返信先情報は、メッセージをプロバイダーに転送する前に保管されます。 プロバイダーから応答を受け取ったとき、相関情報を使って元の要求側の正しい応答アドレスを取得および復元し、後続の取得操作のためにこの情報を保管します。