メッセージ・フローの集約

集約とは、単一の入力メッセージから派生する、関連要求の生成およびファンアウトと、単一の集約された応答メッセージを生成するためのそれに対応する応答のファンインです。

関連した要求項目の集合を表す、メッセージ・フローによって受信された初期要求は、初期要求のサブタスクを満たすために、適切な数の個別の要求に分割されます。 このプロセスは、ファンアウトとして知られており、集約ノードを含むメッセージ・フローによって提供されます。

サブタスクからの応答は、処理の完了を示すために、元のリクエスター (または別のターゲット・アプリケーション) に戻される単一の応答に結合およびマージされます。 このプロセスは、ファンインとして知られており、集約ノードを含むメッセージ・フローによっても提供されます。

メッセージ集約は、AggregateControl ノードの後に AggregateRequest ノードが続くメッセージ・フローによって開始されます。応答は、AggregateReply ノードを含むフローを使用して、集約した上でまとめて戻されます。 集約ノードは、要求/応答モデルを使用するトランスポートの場合にのみ正しく機能します。例えば、WebSphere® MQ Enterprise Transport などです。

WebSphere Message Broker は、集約をサポートする以下の 3 つのメッセージ・フロー・ノードを提供します。

メッセージ・フロー内にこれらのノードを組み込むと、メッセージ・フロー内から同時に複数のファンアウト要求が発行されます。 メッセージ・フローの標準操作は、各ノードがその処理を順に実行します。

WebSphere MQ Enterprise Transport を使用する場合、ファンイン・フローによって受け取られる応答は、応答 ID を含む有効な応答メッセージである必要があります。応答 ID を要求メッセージのメッセージ記述子 (MQMD) のメッセージの値に設定し、応答 ID を MQMD の相関 ID フィールド (CorrelId) に保管する必要があります。CorrelId が MQCI_NONE に設定された場合、AggregateReply ノードはエラーを発行します。これは、応答メッセージが無効であり、要求メッセージとマッチングすることができないからです。

集約ノードを使用して、ブローカー環境外のアプリケーションに要求を発行することもできます。メッセージは、外部アプリケーションまたはサービスに非同期に送信できます。応答は、それらのアプリケーションから検索され、元の要求メッセージに単一の応答を提供するために結合されます。

遅い要求を並行して実行することができ、順次に実行する必要がないので、これらのノードを使用すると、応答時間を改善することもできます。 サブタスクを独立して処理することができ、単一の作業単位の一部として処理する必要がない場合、別々のメッセージ・フローによってサブタスクを処理することができます。

別のアプリケーションにサブタスク要求を発行し (例えば、HTTPRequest ノードを使用して)、ローカル環境内にそれぞれの要求の結果を記録することにより、集約ノードを使用せずに、類似の機能を提供するメッセージ・フローを設計および構成することができます。それぞれのサブタスクが完了した後、Compute ノードで LocalEnvironment からの結果をマージし、ターゲット・アプリケーションに伝搬するための、結合された応答メッセージを作成します。ただし、すべてのサブタスクは順番に実行されることになり、集約ノードを使用すれば得られる並列操作のパフォーマンス上の利点はありません。

集約ノードを使用する集約フローの例は、次のサンプルにあります。 Aggregation サンプルは単純な 4 とおりの集約を示し、Airline Reservations サンプルは航空機予約サービスに関連した要求をシミュレートし、集約フローに関連する技法を例示します。サンプルは、Message Brokers Toolkit と統合されているインフォメーション・センターを使用する場合にのみ表示できます。

集約ノードは集約の状態を WebSphere MQ キューに格納します。 AggregateControl ノード上でタイムアウトを指定しない場合、またはタイムアウトをゼロのままに設定しておく場合、WebSphere MQが内部的に格納する集約要求は、すべての応答メッセージが戻されるまでクリーンアップされません。この状態により、内部キューにメッセージが徐々に溜まる場合があります。 要求がクリーンアップされ、キューに冗長な要求が溜まらないようにするために、タイムアウトをゼロより大きい値に設定します。タイムアウトの必要がない場合やタイムアウトになると予想されない場合でも、タイムアウト値を 86400 秒 (24 時間) などの大きな値に設定すると、キューから古い集約メッセージを取り除くことができます。

新規の集約ノードはメッセージのタイムアウトの管理に WebSphere MQ メッセージの有効期限を使用します。 メッセージの有効期限を機能させるには、集約ノードがメッセージ・キューをブラウズする必要があります。集約ノードは、キューを自動的にブラウズして、有効期限が切れたメッセージを処理します。

z/OS platform z/OS® では、集約ノードの代わりにキューをブラウズするスカベンジャー処理を実行するように WebSphere MQ を構成できます。 スカベンジャーを使用可能にするには、ブローカーのキュー・マネージャー・プロパティー EXPRYINT を 5 秒の値に設定します。EXPRYINT を設定しない、または 10 秒を超える値に設定する場合、集約ノードは自動的に集約キューのブラウズに戻ります。

関連概念
メッセージ・フロー・ノード
関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
集約フローの構成
関連資料
組み込みノード
AggregateControl ノード
AggregateReply ノード
AggregateRequest ノード
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:42:38

ac00660_