Resequence ノードを使用して、着信メッセージのグループ (複数可) がメッセージ・フロー内で伝搬されるシーケンスを制御します。
このトピックには、以下のセクションが含まれています。
Resequence ノードは、着信メッセージのグループ (複数可) がメッセージ・フロー内でこのノードを介して伝搬されるシーケンスを制御します。
Resequence ノードを使用すると、メッセージ内のシーケンス番号に基づいて、メッセージのグループを順次オーダーに並び替えることができます。 各メッセージには、シーケンス番号を含める必要があります。 この番号は、任意の正または負の整数で指定できます。 シーケンス番号は、ノードの「シーケンス番号へのパス」プロパティーに 定義された XPath 式によって計算されます。シーケンス番号は、Sequence ノードによりメッセージに追加されたものである場合があります。
Resequence ノードは、複数のシーケンス・グループを相互に独立した形で再配列できますが、シーケンス・グループ間のメッセージを再配列することはできません。 メッセージが属するグループは、Resequence ノードのプロパティーによって判別されます。
各シーケンス・グループは、1 つの Resequence ノードだけに関連付けできます。 複数の Resequence ノードで同じ名前のシーケンス・グループを保持できますが、 これらのシーケンス・グループはそれぞれ個別のグループとして処理されます。 シーケンス・グループ同士を区別するために、実行グループ名、メッセージ・フロー名、 ノード名、およびシーケンス・グループ名の組み合わせが使用されます。
例えば、eg1 という実行グループにデプロイされる、node1 という Resequence ノードを含んだ flow1 と いうメッセージ・フローがあるとします。 group1 というシーケンス・グループを使用して、メッセージがそのメッセージ・フローに送信されます。 結果は eg1/flow1/node1/group1 です。 完全に同一のメッセージ・フローが、異なる実行グループ (例えば eg2) にある場合は、eg2/flow1/node1/group1 という結果になります。
伝搬される各メッセージが異なるシーケンス・グループに属している場合に限って、 複数のスレッドを使用してメッセージを伝搬するように Resequence ノードを構成できます。 同じシーケンス・グループに属するメッセージの場合、メッセージの伝搬には、一度に 1 つのスレッドしか使用できません。 その結果、シーケンス・グループ内のメッセージの順序は保持されますが、グループ間の順序は維持されません。
Resequence ノードで、トランザクションの中断が発生します。 ノードに着信したメッセージは、出力ターミナルに直接伝搬されません。 すべてのメッセージ (シーケンス内の次のメッセージも含む) は、 最初に内部 WebSphere® MQ キューに直列化されます。 現行のトランザクションで、メッセージの保管が行われます。 メッセージが保管されると、トランザクションは完了します。 保管されたメッセージがシーケンス内の次のメッセージである場合、これが新規トランザクション下でメッセージ・フローの下流へ伝搬されます。 データの直列化可能な部分のみが、ノードから伝搬されます。 ローカル環境、環境、および例外リストは、保持されません。
Resequence ノード以降のノードで発生した例外は、 Resequence ノードの Catch ターミナルにロールバックされます。 Catch ターミナルが他のノードに接続されていない場合は、メッセージは元の ターミナル (Out、Missing、または Expired) に再送されます。 メッセージは、バックアウトされることも、廃棄されることもありません。
Resequence ノードのさまざまな状態および状態遷移については、 Resequence ノードの状態マシンを参照してください。
Resequence ノードはパレットの「ルーティング」ドロワーに含まれていて、WebSphere Message Broker Toolkit 内では次のアイコンによって表されます。
サンプルに関する情報は、WebSphere Message Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。
Resequence ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。
デフォルト値が定義されていないすべての必須プロパティーには、アスタリスクのマークが付きます。
以下のように、Resequence ノードを構成します。
式の評価結果が False の間は、メッセージの収集が続けられます。 メッセージの式の評価結果が True になると、そのメッセージがシーケンスの先頭になります。
戻りデータ型 | True | False |
---|---|---|
ブール | True | False |
数値 | ゼロ以外の任意の値 | 0 または 0.0 |
ストリング | true と一致する任意の文字列 (大/小文字を区別しない) | true と一致しない任意の文字列 (大/小文字を区別しない) |
NodeSet | しない | 常時 |
メッセージの式の評価結果が True になると (つまり、そのメッセージがシーケンスの開始であることが判別されると)、ノードは、そのメッセージのシーケンス番号が、その時点までに収集されたメッセージの最小のシーケンス番号であることを確認します。 それよりも小さいシーケンス番号が見つかると、例外がスローされます。
評価結果が True になった最初のメッセージが正常に処理されると、後続メッセージの XPath 式はチェックされなくなります。 シーケンスの開始であると判別されたメッセージのシーケンス番号よりも小さいシーケンス番号のメッセージが着信すると、例外がスローされます。
通常、XPath 式はブール値として評価されますが、他のデータ型が返される場合は、表 1 のようにして述部が決定されます。
述部の評価結果が True になると、そのメッセージのシーケンス番号が「シーケンス定義の終了」プロパティーに割り当てられます。
シーケンスの終了の述部が True に設定されたメッセージを受け取っても、シーケンス・グループは開いたままの状態で、「欠落しているメッセージ・タイムアウト」プロパティーの有効期限が切れるまで、欠落メッセージを待ち続けます。 その時間内 (つまり、シーケンス・グループが閉じる前) に着信するメッセージは、そのグループに組み込まれます (ただし、重複メッセージや許容範囲外のメッセージは除きます)。 シーケンス・グループが閉じると、そのグループの新しい着信メッセージは、そのグループの新しいインスタンスに属するメッセージとして処理されます。
シーケンスの終了の述部が True に設定されたメッセージが着信した場合に、そのメッセージのシーケンス番号が、それより前に着信していたメッセージのシーケンス番号よりも小さい場合は、例外がスローされます。
指定の制限時間を過ぎると、メッセージは Expire ターミナルに順次オーダーで伝搬されます。 そのシーケンス・グループ内のその後のメッセージも、Expire ターミナルにルーティングされます。 最終的に未着メッセージが到着すると、Missing ターミナルに伝搬されます。
伝搬される各メッセージが異なるシーケンス・グループに属している場合に限って、 同じ Resequence ノードから複数のスレッドを使用してメッセージを伝搬することができます。 同じシーケンス・グループに属するメッセージの場合、メッセージの伝搬には、一度に 1 つのスレッドしか使用できません。 その結果、シーケンス・グループ内のメッセージの順序は保持されますが、グループ間の順序は維持されません。
追加インスタンスの指定については詳しくは、構成可能な「メッセージ・フロー」プロパティーを参照してください。
Resequence ノードのターミナルについては、次の表に説明されています。
ターミナル | 説明 |
---|---|
In | 着信メッセージ・アセンブリーがノードに到着する入力ターミナル。 |
Failure | エラーが発生した場合にメッセージがルーティングされる出力ターミナル。 この値には、再試行処理が原因の障害も含まれます。 |
Out | 出力メッセージがデフォルトで伝搬される出力ターミナル。 |
Expire | ノードがメッセージの到着を待機している間にタイムアウトが発生した場合に、メッセージがルーティングされる出力ターミナル。 同一のグループ内の後続のすべてのメッセージもこのターミナルに伝搬されます。 |
Missing | (タイムアウトが生じた原因となった) 未着メッセージがノードにその後に到着する場合に、ルーティング先となる出力ターミナル。 |
Catch | 例外がダウンストリームで発行され、ノードによってキャッチされた場合に、メッセージがルーティングされる出力ターミナル。 例外がキャッチされるのは、このターミナルが接続されている場合のみです。 |
以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力する必要がある場合、アスタリスクのマークが付きます)。C の見出しの列は、プロパティーが構成可能 (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できる) かどうかを示します。
Resequence ノードの「説明」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
ノード名 | いいえ | いいえ | Resequence | ノードの名前。 |
簡略説明 | いいえ | いいえ | ノードの簡単な説明 | |
詳細説明 | いいえ | いいえ | メッセージ・フロー内のノードの目的を説明するテキスト |
Resequence ノードの基本プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
シーケンス番号へのパス | はい | いいえ | メッセージのシーケンス番号を計算する XPath 式。 | |
シーケンス・グループ ID へのパス | いいえ | いいえ | シーケンス・グループ ID を計算する XPath 式。 グループ ID が同じメッセージは、同じシーケンス・グループに属していると見なされます。 このプロパティーは、Collector ノードにおける「相関パス」プロパティーと同じ方法で機能します。 | |
シーケンス定義の開始 | はい | いいえ | リテラル、0 | 各グループの最初のシーケンス番号を指定します。 有効な値は以下のとおりです。
|
シーケンス定義の終わり | はい | いいえ | 自動 | 各シーケンス・グループがいつ完了するかを指定します。 有効な値は以下のとおりです。
|
未着メッセージ・タイムアウト (秒) | いいえ | いいえ | ノードが、シーケンス内の次のメッセージに移動するまでに、そのメッセージを待機する長さ (秒単位) を指定します。 このプロパティーは、Resequence 構成可能サービスで「未着メッセージ・タイムアウト」プロパティー (設定されている場合) によって指定変更されます。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
追加インスタンス・プール | いいえ | はい | メッセージ・フローに関連付けられたプールの使用 | 追加インスタンスの取得元のプール。
|
追加インスタンス | いいえ | はい | 0 | 「追加インスタンス・プール」プロパティーが「ノードに関連付けられたプールの使用」に設定されている場合に、ノードが開始できる追加インスタンスの数。 |
Resequence ノードの拡張プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
持続モード | はい | いいえ | 非持続 | メッセージの不完全なシーケンスを永続的に保管するかどうかを指定します。 有効なオプションは、以下のとおりです。
|
構成可能サービス | いいえ | はい | 設定なし | このプロパティーは、Resequence ノードが使用する Resequence 構成可能サービスの名前を指定します。 Resequence 構成可能サービスによって設定されるプロパティーは、Resequence ノードに設定された対応するプロパティーを指定変更します。 この構成可能サービスによって設定可能なプロパティーの詳細については、構成可能サービスのプロパティーを参照してください。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
イベント | いいえ | いいえ | なし | ノードに対して定義したイベントが、このタブに表示されます。 デフォルトでは、メッセージ・フローのどのノードに対してもモニター・イベントは定義されません。 ノードのモニター・イベントを作成、変更、または削除するには、「追加」、「編集」、および「削除」を使用します。詳しくは、モニター・プロパティーを使用したモニター・イベント・ソースの構成を参照してください。 「使用可能」チェック・ボックスを選択またはクリアすることによって、ここに表示されているイベントを使用可能および使用不可に設定できます。 |