集約とは、単一の入力メッセージから派生する、関連要求の生成およびファンアウトと、単一の集約された応答メッセージを生成するためのそれに対応する応答のファンインです。
関連した要求項目の集合を表す、メッセージ・フローによって受信された初期要求は、初期要求のサブタスクを満たすために、適切な数の個別の要求に分割されます。 このプロセスは、ファンアウトとして知られており、集約ノードを含むメッセージ・フローによって提供されます。
サブタスクからの応答は、処理の完了を示すために、元のリクエスター (または別のターゲット・アプリケーション) に戻される単一の応答に結合およびマージされます。 このプロセスは、ファンインとして知られており、集約ノードを含むメッセージ・フローによっても提供されます。
サポートされるプロトコルによってブローカーに接続されるクライアント・アプリケーションからメッセージ・フローにメッセージを送信することによって集約を開始することができます。集約された応答は、これらのすべてのプロトコルによってクライアント・アプリケーションに送信することもできます。 ファンアウト・メッセージ・フローで発行されるメッセージ、およびファンイン・メッセージ・フローで受信される応答は、要求/応答メッセージでなければなりません。 したがって、WebSphere MQ Enterprise Transport (メッセージを MQInput ノードと MQOutput ノードとの間で送受信する)を使用して接続するクライアント・アプリケーションか、あるいは要求/応答通信モデルに従うユーザー定義入出力ノードによってサポートされる別のプロトコルを使用するクライアントに制限されます。
WebSphere Message Broker は、集約をサポートする以下の 3 つのメッセージ・フロー・ノードを提供します。
メッセージ・フロー内にこれらのノードを組み込むと、メッセージ・フロー内から同時に複数のファンアウト要求が発行されます。 これは、各ノードがその処理を順に実行するメッセージ・フローの標準操作とは対照的です。
これらのノードを使用して、ブローカー環境外のアプリケーションに要求を発行することもできます。 メッセージは、外部アプリケーションまたはサービス、それらのアプリケーションから検索される応答、および元の要求メッセージに単一の応答を提供するために結合される応答に非同期に送信できます。
遅い要求を並行して実行することができ、順次に実行する必要がないので、これらのノードを使用すると、応答時間を改善することもできます。 サブタスクを独立して処理することができ、単一の作業単位の一部として処理する必要がない場合、別々のメッセージ・フローによってサブタスクを処理することができます。
別のアプリケーションにサブタスク要求を発行し (例えば、HTTPRequest ノードを使用して)、LocalEnvironment 内にそれぞれの結果を記録することにより、集約ノードを使用せずに、類似の機能を提供するメッセージ・フローを設計および構成することができます。 それぞれのサブタスクが完了した後、Compute ノードで LocalEnvironment からの結果をマージし、ターゲット・アプリケーションに伝搬するための、結合された応答メッセージを作成することができます。 これを行う場合、すべてのサブタスクは順番に実行されることになり、集約ノードを使用すれば得られる並列操作のパフォーマンス上の利点はありません。
集約ノードを使用する集約フローの例は、Aggregation サンプルおよびAirline Reservations サンプルにあります。Aggregation サンプルは単純な 4 とおりの集約を示し、Airline Reservations サンプルは航空機予約サービスに関連した要求をシミュレートし、集約フローに関連する技法を例示します。
WebSphere Message Broker の前のリリースでは、集約要求を持続するために集約はブローカー・データベースの表を使用していました。
WebSphere
Business Integration Message Broker バージョン 5.0 以降からは、これの代わりに
WebSphere MQ を使用することができます。
集約ノードの外部機能は未変更のままですが、データベース表の代わりに WebSphere MQ キューを使って集約を保管するよう実行グループを構成することができます。
WebSphere MQ をこのように使用することでパフォーマンスが改善され、集約要求の持続性が不要な場合に集約を非持続モードで実行することができます。
WebSphere MQ を使用するように実行グループを移行および構成する方法について詳しくは、集約ノードに状態を保管するための WebSphere MQ の使用を参照してください。
集約状態の保管手段をデータベース表の使用から WebSphere MQ の使用に変更する際には既存の集約が移行されないため、未解決の集約がないようにしておくことが重要です。未解決の集約が移行されず、残されてしまうことになるからです。
新規の集約ノードはメッセージのタイムアウトの管理に WebSphere MQ メッセージの有効期限を使用します。
メッセージの有効期限を機能させるには、メッセージ・キューをブラウズする必要があります。
集約ノードは、キューを自動的にブラウズして、有効期限が切れたメッセージを処理します。
z/OS では、集約ノードの代わりにこのブラウズを実行するスカベンジャー処理を実行するように WebSphere MQ を構成できます。
スカベンジャーを使用可能にするには、ブローカーのキュー・マネージャー・プロパティー EXPRYINT を 5 秒に設定します。
EXPRYINT を設定しない、または 10 秒を超える値に設定する場合、集約は自動的に集約キューのブラウズに戻ります。