集約とは、単一の入力メッセージから派生する、関連要求の生成およびファンアウトと、単一の集約された応答メッセージを生成するためのそれに対応する応答のファンインです。
関連した要求項目の集合を表す、メッセージ・フローによって受信された初期要求は、初期要求のサブタスクを満たすために、適切な数の個別の要求に分割されます。 このプロセスは、ファンアウトとして知られており、集約ノードを含むメッセージ・フローによって提供されます。
サブタスクからの応答は、処理の完了を示すために、元のリクエスター (または別のターゲット・アプリケーション) に戻される単一の応答に結合およびマージされます。 このプロセスは、ファンインとして知られており、集約ノードを含むメッセージ・フローによっても提供されます。
サポートされるプロトコルによってブローカーに接続されるクライアント・アプリケーションからメッセージ・フローにメッセージを送信することによって集約を開始することができます。集約された応答は、これらのすべてのプロトコルによってクライアント・アプリケーションに送信することもできます。 ファンアウト・メッセージ・フローで発行されるメッセージ、およびファンイン・メッセージ・フローで受信される応答は、要求/応答メッセージでなければなりません。 したがって、WebSphere MQ Enterprise Transport (メッセージを MQInput ノードと MQOutput ノードとの間で送受信する)を使用して接続するクライアント・アプリケーションか、あるいは要求/応答通信モデルに従うユーザー定義入出力ノードによってサポートされる別のプロトコルを使用するクライアントに制限されます。
WebSphere Message Broker は、集約をサポートする以下の 3 つのメッセージ・フロー・ノードを提供します。
メッセージ・フロー内にこれらのノードを組み込むと、メッセージ・フロー内から同時に複数のファンアウト要求が発行されます。 これは、各ノードがその処理を順に実行するメッセージ・フローの標準操作とは対照的です。
これらのノードを使用して、ブローカー環境外のアプリケーションに要求を発行することもできます。 メッセージは、外部アプリケーションまたはサービス、それらのアプリケーションから検索される応答、および元の要求メッセージに単一の応答を提供するために結合される応答に非同期に送信できます。
遅い要求を並行して実行することができ、順次に実行する必要がないので、これらのノードを使用すると、応答時間を改善することもできます。 サブタスクを独立して処理することができ、単一の作業単位の一部として処理する必要がない場合、別々のメッセージ・フローによってサブタスクを処理することができます。
別のアプリケーションにサブタスク要求を発行し (たとえば、HTTPRequest ノードを使用して)、LocalEnvironment 内にそれぞれの結果を記録することにより、集約ノードを使用せずに、類似の機能を提供するメッセージ・フローを設計および構成することができます。 それぞれのサブタスクが完了した後、Compute ノードで LocalEnvironment からの結果をマージし、ターゲット・アプリケーションに伝搬するための、結合された応答メッセージを作成することができます。 これを行う場合、すべてのサブタスクは順番に実行されることになり、集約ノードを使用すれば得られる並列操作のパフォーマンス上の利点はありません。
集約ノードを使用した集約フローの例は、WebSphere Message Broker で提供されている 航空機 (Airline) サンプル内にあります。 このメッセージ・フロー・アプリケーションは、航空機予約サービスに関連した要求をシミュレートし、集約フローに関連する技法を例示します。