ファンイン・フローでのスレッド不足の回避

このトピックは、ファンアウト・フロー内の Aggregate Control ノードの Control ターミナルが、キューへの出力制御メッセージに接続されている場合にのみ適用されます。Control ターミナルに接続しなければ、このセクションで論じられている問題は克服できます。AggregateControl の Control ターミナルの接続の詳細については、集約フローでの制御メッセージの使用を参照してください。

Aggregate Reply ノードには、IN と Control の 2 つの入力ターミナルがあります。 それら両方のターミナルを使用する場合、Control ターミナルの使用はオプションであることを踏まえると、Aggregate Reply ノードにデータを提供する最も効率的な方法は、ファンイン・フローに対する単一の MQInput ノードを持ち、それに Filter ノードが続くことです。 Filter ノードは、着信メッセージを Aggregate Reply ノードの IN または Control ターミナルに必要に応じてルーティングするために使用します。

メッセージ・フロー内の 2 つの MQInput ノード (1 つは IN ターミナル用、もう 1 つは Control ターミナル用) の代わりに、Filter ノードが続く単一の MQInput を使用します。 単一の MQInput ノードを使用する必要があるのは、追加のスレッド (追加のインスタンスの使用により使用可能になる) を、2 つの MQInput ノード間で分散させる方法を指定する手段がないためです。AggregateReply ノードの IN ターミナル上のトラフィックは多くなる可能性があるので、入力ノードではさらに多くのスレッドを実行しておくと便利ですが、2 つの MQInput ノードを使用してこれを構成することはできません。 したがって、応答メッセージのバックアップや、集約メカニズムの行き詰まりによって、 ノードでスレッドが不足する可能性があります。

Filter ノードで以下に示すような ESQL モジュールを使用して、メッセージが AggregateReply ノードの適切なターミナルにルーティングされるようにします。
CREATE FILTER MODULE FanIn_Filter
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        IF Root.XML.ComIbmAggregateControlNode IS NULL THEN
            RETURN TRUE;  -- wired to In
        ELSE             RETURN FALSE; -- wired to Control
        END IF;
    END;  END MODULE;
注: 上述のとおりにファンイン・フローを構成できない場合は、制御メッセージを読み取る MQInput ノードが単一スレッドで実行するように強制できます。 これは MQInput ノードを構成することによって行います。 拡張プロパティー・パネル上で「順序モード」プロパティーを「キュー順序」に設定し、「論理順序」を選択することで実行します。 これにより、構成済みの追加のインスタンスはすべて、他の MQInput ノードが使用するために解放されます。 最初の MQInput ノードのパフォーマンスはかなり制限されるので、この構成は代替手段がない場合にのみ使用すべきことに注意してください。
関連概念
メッセージ・フローの概要
メッセージ・フローの集約
関連タスク
集約ファンイン・フローの作成
集約ファンアウト・フローの作成
ファンアウトおよびファンイン集約フローの関連付け
集約のタイムアウトの設定
複数の AggregateControl ノードの使用
集約フロー内の例外の処理
集約フローの構成
関連資料
AggregateControl ノード
AggregateReply ノード
AggregateRequest ノード
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac12313_