WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

集約ファンイン・フローの作成

集約ファンイン・フローは、ファンアウト・フローにより送信された要求メッセージへの応答を受信し、受信されたすべての応答を含む結合された応答メッセージを構成します。

始める前に:

同じメッセージ・フロー内にファンアウトおよびファンイン・フローを組み込むことは可能です。ただし、2 つの別々のフローを作成してもかまいません。 別個のメッセージ・フローを構成することの利点について詳しくは、ファンアウトおよびファンイン集約フローの関連付けを参照してください。同じファンイン・フローの複数のコピーを同じ実行グループまたは別の実行グループ内にデプロイしないでください。

ファンアウト・フローをトランザクションに構成しない場合は、指定したタイムアウト値が原因で、結合された応答メッセージが、すべての応答がファンイン・フローによって受信される前に生成されることもあります。 詳しくは、集約ファンアウト・フローの作成を参照してください。

ファンイン・フローの例について検討するには、以下のサンプルを参照してください。

サンプルに関する情報は、WebSphere® Message Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。

ファンイン・フローを作成するには、以下のようにします。

  1. ファンイン処理を提供するためにメッセージ・フローを作成します。
  2. 以下のノードをエディター・ビューに追加して、以下に示されているとおりにこれらを構成および接続します。
    入力ノード
    入力ノードは、ファンアウト・フローから生成された多重要求メッセージに対する応答を受信します。

    このノードは、MQInput ノードなどの、 要求/応答モデルをサポートする入力ノード、あるいはこれらのノードの混合でなければなりません (これらの応答を送信するアプリケーションの要件に応じて異なります)。 それぞれの入力ノードによって受信された応答は、対応する要求と同じプロトコルを介して送信されなければなりません。 例えば、 ファンアウト・フロー内に MQOutput ノードを組み込む場合には、その要求への応答は、 このファンイン・フロー内の MQInput ノードによって受信されなければなりません。

    1. 入力ノードを選択して、「プロパティー」ビューを開きます。 ノードのプロパティーが表示されます。
    2. このノードの入力メッセージのソースを指定します。例えば、MQInput ノードがメッセージの検索元とする基本プロパティー「キュー名」内に、WebSphere MQ キューの名前を指定します。
    3. オプション: このノードのために構成したいその他のプロパティーの値を指定します。
    4. 入力ノードの Out ターミナルを、AggregateReply ノードの In ターミナルに接続します。

      このようにしてターミナルを接続し、最も単純な構成を作成します。適当であれば、入力ノードと AggregateReply ノードとの間に他のノードを組み込むことができます。例えば、監査のために応答を (Database ノードに) 保管したい場合もあります。

    先に説明されていたとおり、ファンイン・フローの先頭で集約応答メッセージのすべてを受け取る 1 つの入力ノードを組み込みます。 複数の入力ノードを組み込んだ場合、特定の応答入力ノードによって開始されたスレッドが、他のスレッドが応答メッセージを AggregateReply ノードに送信していてタイムアウト適格になる途上で、メッセージ・フローの集約および実行を完了する可能性があります。 単一入力ノードを使用して、各集約の応答の順次処理を有効にしてください。 追加のインスタンスを指定して、この単一ノードでの処理のスループットを増大させます。構成可能な「メッセージ・フロー」プロパティーを参照してください。

    AggregateReply ノード
    AggregateReply ノードは、In ターミナルを介して入力ノードからインバウンド応答を受信します。 AggregateReply ノードは、以降の処理のためにそれぞれの応答メッセージを保管します。

    集約要求の特定のグループに対するすべての応答が収集されると、AggregateReply ノードは、 集約された応答メッセージを作成し、Out ターミナルを介して集約された応答メッセージを伝搬します。

    1. AggregateReply ノードを選択して、「プロパティー」ビューを開きます。 ノードのプロパティーが表示されます。
    2. この集約を識別するには、AggregateReply ノードの「集約名」>プロパティーを設定します。 この値が、ファンアウト・フロー内の対応する AggregateControl ノードにある 「集約名」プロパティーに対する値と同じになるよう設定してください。
    3. オプション: 不明なターミナルに伝搬する前に、認識されないメッセージを保存したい場合には、「不明なメッセージ・タイムアウト」プロパティーの値を設定してください。 別個のファンアウトおよびファンイン・フローを使用する場合、制御メッセージが遅延する可能性があれば、この値をゼロ以外の数に設定します。
    4. オプション: 認識されないメッセージを明示的に処理するには、別のノードまたはノードのシーケンスに不明なターミナルを接続してください。 メッセージ・フロー内の別のノードにこのターミナルを接続しない場合には、このターミナルを介して伝搬されるメッセージは廃棄されます。
    5. オプション: AggregateControl ノードでこの集約のタイムアウト値を指定し、 すべての応答が受信される前に有効期限が切れるタイムアウトを明示的に処理したい場合は、 タイムアウト・ターミナルを別のノードまたはノードのシーケンスに接続してください。 タイマーが切れる場合、部分的に完全な集約された応答は、タイムアウト・ターミナルに送信されます。 メッセージ・フロー内の別のノードにこのターミナルを接続しない場合には、このターミナルを介して伝搬されるメッセージは廃棄されます。
    6. オプション: このノードのために構成したいその他のプロパティーの値を指定します。
    7. AggregateReply ノードの Out ターミナルを Compute ノードの In ターミナルに接続します。
    重要: AggregateReply ノードの制御ターミナルは、バージョン 6.0 では非推奨でした。そしてデフォルトでは、このターミナルへの接続は (直接または間接のいずれも) 無視されます。 この変更は集約フローの効率を最大化し、集約の信頼性を損ないません。 この構成は、最適な内容を提供します。

    ただし、ファンアウト・フロー上の対応する AggregateControl ノードによって送信された制御メッセージを、 制御ターミナル上で AggregateReply ノードが受け取るようにしたい場合、 集約ファンアウト・フローの作成で説明されているように、必要な接続を作成しなければなりません。 AggregateReply ノードから出力ノードへのパスは、可能な限り直接的なものにして、集約のパフォーマンスを最大化してください。 この制御メッセージの内容を変更しないでください。

    さらに、制御ターミナルとそこへの接続を認識させるには、環境変数 MQSI_AGGR_COMPAT_MODE を使用可能にする必要があります。 このオプションを選択した場合は、メッセージ集約のパフォーマンスおよび動作が影響を受ける可能性があります。これらの影響および環境変数の完全な説明については、集約フローでの制御メッセージの使用を参照してください。

    AggregateReply ノード出力ターミナル (Out および Timeout) から送信される集約メッセージは、妥当性検査されません。 データの妥当性検査はすべて、メッセージが AggregateReply ノードへ送信される前に行われる必要があります。なぜなら、保管メッセージの再構成時には、妥当性検査オプションは無視されるからです。

    Compute ノード
    Compute ノードは結合された応答を含むメッセージを受信します。 一般的に、この結合メッセージのフォーマットは、出力に対して無効です。 これは、集約応答メッセージが独特の構造であり、一部のノード (MQOutput ノードなど) で必要なビット・ストリームに解析できないためです。 Out およびタイムアウト・ターミナルは、常に集約応答メッセージを伝搬するため、 MQOutput ノードに伝搬する前に常に追加の処理が必要になります。 したがって、Compute ノードを組み込み、このノードを有効な出力メッセージを作成するよう構成する必要があります。
    1. Compute ノードを選択して、「プロパティー」ビューを開きます。 ノードのプロパティーが表示されます。
    2. 基本プロパティー「ESQL モジュール」内にこのノードの機能をカスタマイズする ESQL モジュールの名前を指定します。
    3. ノードを右クリックし、「ESQL のオープン」をクリックして、このノードのモジュールを含む ESQL ファイルを開きます。 ESQL エディター・ビューでモジュールが強調表示されます。
    4. 入力メッセージ内の集約された応答から単一の出力メッセージを作成するように ESQL をコーディングします。

      Out ターミナルを介して、集約された応答メッセージが伝搬されます。 その内容にアクセスする方法については、結合メッセージの内容へのアクセスを参照してください。

    5. オプション: このノードのために構成したいその他のプロパティーの値を指定します。
    6. Compute ノードの Out ターミナルを、単一の応答メッセージの宛先を表す出力ノードの In ターミナルに接続します。
    Output ノード
    ファンイン・フローの出力ノードを組み込みます。 このノードは、組み込みノードのいずれかまたはユーザー定義の出力ノードにすることができます。
    1. 出力ノードを選択して、「プロパティー」ビューを開きます。 ノードのプロパティーが表示されます。
    2. このノードの出力メッセージの宛先を指定します。例えば、MQOutput ノードのメッセージの送信先となる基本プロパティー「キュー名」内に WebSphere MQ キューの名前を指定します。
    3. オプション: このノードのために構成したいその他のプロパティーの値を指定します。
  3. メッセージ・フローを保存し、その構成を検証するには、Ctrl+S を押すか、または「ファイル」 > 「保存」をクリックします。

結合メッセージの内容へのアクセス

AggregateReply ノードは、 ComIbmAggregateReplyBody と呼ばれる Root の下の結合メッセージ・ツリー内にフォルダーを作成します。 ノードは、このフォルダーの下に、AggregateRequest ノードで設定した名前を使用して、いくつかのサブフォルダーを作成します。 これらのサブフォルダーには、関連する応答メッセージが読み込まれます。

例えば、要求メッセージが次のフォルダー名を持つとします。

  • TAXI
  • HOTEL

結果として AggregateReply ノードによって作成される集約応答メッセージは、以下の例と同様の構造を持つことになります。

Root の下のエレメント ComIbmAggregateReplyBody の下に作成された、集約されたメッセージ内容のツリーを示す図。 その内容は前後のテキストで説明しています。

Compute ノード内の ESQL を使用して、 タクシー会社からの応答にアクセスするには、次の相関名を使用します。

InputRoot.ComIbmAggregateReplyBody.TAXI.xyz

フォルダー名は固有でなくてかまいません。 フォルダー名が TAXI の要求が複数ある場合、配列添え字表記法を使用して個々の応答にアクセスできます。以下に例を示します。

InputRoot.ComIbmAggregateReplyBody.TAXI[1].xyz
InputRoot.ComIbmAggregateReplyBody.TAXI[2].xyz
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:45:31


タスク・トピックタスク・トピック | バージョン 8.0.0.5 | ac12300_