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

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

メッセージ・シーケンスの開始

Resequence ノードと Sequence ノードの「シーケンス定義の開始」プロパティーで、メッセージ・シーケンスの開始点を指定します。

Resequence ノードの使用

Resequence ノードを使用して、メッセージ・フローのメッセージを再配列する場合は、Resequence ノードの「シーケンス定義の開始」プロパティーを使用して、再配列後のメッセージ・シーケンスの開始点を定義します。 以下のいずれかの方法で、開始シーケンス番号を指定できます。

リテラル番号として指定する
「リテラル」を選択して、リテラル・シーケンス番号を指定します。 この番号には、-9223372036854775807 から 9223372036854775807 の範囲で、 任意の正または負の数値を指定できます。 指定したシーケンス番号のメッセージが着信すると、そのメッセージがシーケンス内の最初のメッセージとして判別され、伝搬されます。
受け取った最小の番号を使用する
「自動」を選択し、時間の長さを (秒単位で) 指定します。ノードは、その時間内にメッセージを収集し、その時間が終了した時点で、最小のシーケンス番号が含まれているメッセージを判別します。 最小の番号が判別されると、そのシーケンス番号がメッセージ・シーケンスの先頭になります。
例えば、以下のようなプロパティーを指定した Resequence ノードがあるとします。
  • 「シーケンス番号へのパス」プロパティーに値 /doc/seq を指定します。
  • 「シーケンス・グループ ID へのパス」プロパティーに値 /doc/grp を指定します。
  • 「シーケンス定義の開始」プロパティーを「自動」に設定し、値 5 を指定します。その値を指定すると、Resequence ノードは、新しいグループについて、メッセージを 5 秒間収集し、その時間が終了した時点で開始シーケンス番号を判別するようになります。
  • 「シーケンス定義の終了」プロパティーを「自動」に設定し、値 60 を指定します。 その値を指定すると、Resequence ノードは、新しいグループについて、60 秒間待機してから、終了シーケンス番号を判別するようになります。
Resequence ノードが以下のようなメッセージを受け取ります。
<doc><grp>a<grp><seq>5</seq></doc>
<doc><grp>a<grp><seq>4</seq></doc>
<doc><grp>a<grp><seq>3</seq></doc>
<doc><grp>a<grp><seq>2</seq></doc>
<doc><grp>b<grp><seq>0</seq></doc>
<doc><grp>b<grp><seq>2</seq></doc>
この時点で、シーケンスの開始に関する自動期間 (5 秒間) が満了し、その後、以下のメッセージを受け取ります。
<doc><grp>a<grp><seq>6</seq></doc>
<doc><grp>b<grp><seq>3</seq></doc>
5 秒が経過すると、グループ a で、以下のようなメッセージが Out ターミナルに伝搬します。
<doc><grp>a<grp><seq>2</seq></doc>
<doc><grp>a<grp><seq>3</seq></doc>
<doc><grp>a<grp><seq>4</seq></doc>
<doc><grp>a<grp><seq>5</seq></doc>
<doc><grp>a<grp><seq>6</seq></doc>
5 秒が経過すると、グループ b で、以下のようなメッセージが Out ターミナルに伝搬します。
<doc><grp>b<grp><seq>0</seq></doc>
それ以降メッセージを受信しないまま、未着メッセージ・タイムアウトが発生します。 この時点で、以下のメッセージが Expire ターミナルに伝搬されます。
<doc><grp>b<grp><seq>2</seq></doc>
<doc><grp>b<grp><seq>3</seq></doc>
Resequence ノードで設定する述部を使用する
「述部」を選択して、メッセージがシーケンスの先頭かどうかを計算するための XPath 式を指定します。 述部の評価結果は、True または False になります。式の評価結果が False の間は、メッセージの収集が続けられます。 メッセージの式の評価結果が True になると、そのメッセージがシーケンスの先頭になります。
例えば、以下のような XPath 式を指定することができます。
/Employee/EmpStartSeq="10"
入力メッセージ・フィールド EmpStartSeq が値 10 を含んでいる場合、シーケンスの開始述部は True と評価され、メッセージはシーケンスの先頭として識別されます。
<Employee>
 <EmpStartSeq>10</EmpStartSeq>
</Employee>
通常、XPath 式はブール値として評価されますが、他のデータ型が返される場合は、以下のようにして述部が決定されます。
表 1.
戻りデータ型 True False
ブール True False
数値 ゼロ以外の任意の値 0 または 0.0
ストリング true と一致する任意の文字列 (大/小文字を区別しない) true と一致しない任意の文字列 (大/小文字を区別しない)
NodeSet しない 常時

メッセージの式の評価結果が True になると (つまり、そのメッセージがシーケンスの開始であることが判別されると)、ノードは、そのメッセージのシーケンス番号が、その時点までに収集されたメッセージの最小のシーケンス番号であることを確認します。 それよりも小さいシーケンス番号が見つかると、例外がスローされます。

評価結果が True になった最初のメッセージが正常に処理されると、後続メッセージの XPath 式はチェックされなくなります。 シーケンスの開始であると判別されたメッセージのシーケンス番号よりも小さいシーケンス番号のメッセージが着信すると、例外がスローされます。

Sequence ノードの使用

Sequence ノードを使用して、メッセージ・フローのメッセージにシーケンス番号を追加する場合は、「シーケンス定義の開始」プロパティーを使用して、開始シーケンス番号として使用するリテラル番号を指定します。 -9223372036854775807 から 9223372036854775807 の範囲で正または負の整数値を指定できます。

Sequence ノードは、ノードに到達する各入力メッセージに対して単純に増分するシーケンス番号を割り振ります。その開始点は、「シーケンス定義の開始」プロパティーで定義したシーケンス番号になります。 ただし、この値は、着信メッセージの LocalEnvironment 内の StartOfSequenceNumber フィールドの値によって指定変更できます。 例えば、InputLocalEnvironment.Sequence.StartOfSequenceNumber = 10 のようにします。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

        
        最終更新:
        
        最終更新: 2015-02-28 17:48:39


概念トピック概念トピック | バージョン 8.0.0.5 | bc28022_