EnforceOrder 2025.10.2.19¶
バンドル¶
org.apache.nifi | nifi-standard-nar
説明¶
Enforces expected ordering of FlowFiles that belong to the same data group within a single node. Although PriorityAttributePrioritizer can be used on a connection to ensure that flow files going through that connection are in priority order, depending on error-handling, branching, and other flow designs, it is possible for FlowFiles to get out-of-order. EnforceOrder can be used to enforce original ordering for those FlowFiles. [IMPORTANT] In order to take effect of EnforceOrder, FirstInFirstOutPrioritizer should be used at EVERY downstream relationship UNTIL the order of FlowFiles physically get FIXED by operation such as MergeContent or being stored to the final destination.
入力要件¶
REQUIRED
機密動的プロパティをサポート¶
false
プロパティ¶
プロパティ |
説明 |
|---|---|
batch-count |
EnforceOrder が実行時に処理できる FlowFiles の最大数。 |
group-id |
EnforceOrder は複数の注文グループが可能です。「グループ識別子」は、 FlowFile がどのグループに属するかを判断するために使用されます。このプロパティは、 FlowFile を受信するたびに評価されます。評価結果が空の場合、 FlowFile は失敗にルーティングされます。 |
inactive-timeout |
非アクティブグループの状態が管理状態からクリアされる期間を示します。指定された期間、グループに新しい着信 (FlowFile) がない場合、グループは非アクティブと判断されます。Inactive TimeoutはWait Timeoutより長くなければなりません。FlowFile がそのグループがすでにクリアされた後に遅れて到着した場合、それはまったく新しいグループとして扱われますが、予想される先行 FlowFiles がすでになくなっているため、順番が一致することはありません。FlowFile は最終的に待ち時間でタイムアウトし、'overtook'にルーティングされます。これを避けるためには、グループの状態を十分に長く保つ必要がありますが、同じグループ識別子を再利用するためには、期間を短くした方が便利です。 |
initial-order |
グループの最初の FlowFile が到着すると、最初のターゲットオーダーが計算され、管理状態に保存されます。その後、ターゲットオーダーは EnforceOrder によって追跡され始め、状態管理ストアに保存されます。式言語が使用されているが、評価された結果が整数でなかった場合、 FlowFile は失敗にルーティングされ、連続する FlowFiles が有効な初期順序を提供するまで、初期順序は不明のままになります。 |
maximum-order |
指定された場合、より大きなオーダーを持つ FlowFiles はすべて失敗にルーティングされます。このプロパティは、指定されたグループに対して一度だけ計算されます。最大オーダーが計算された後、それは状態管理ストアに永続化され、同じグループに属する他の FlowFiles に使用されます。式言語が使用され、評価された結果が整数でなかった場合、 FlowFile は失敗にルーティングされ、連続する FlowFiles が有効な最大オーダーを提供するまで、最大オーダーは不明のままになります。 |
order-attribute |
グループ内で FlowFiles の順序を強制するために値が使用される FlowFile 属性の名前。FlowFile にこの属性がないか、その値が整数でない場合、 FlowFile は失敗にルーティングされます。 |
wait-timeout |
待機している FlowFiles が「overtook」関係にルーティングされるまでの時間を示します。 |
状態管理¶
スコープ |
説明 |
|---|---|
LOCAL |
EnforceOrder はグループ順序で次の状態を使用します。 '<groupId>.target' は、次に到着するのを待っている順序番号です。一致するオーダーを持つ FlowFile が到着したとき、または FlowFile が待ちタイムアウトのために待機中の FlowFile を追い越したとき、ターゲットオーダーは (FlowFile.order + 1) に更新されます。'<groupId>.max はグループの最大注文数です。'<groupId>.updatedAt' は、グループのオーダーが前回更新されたタイムスタンプです。これらの管理状態は、グループが非アクティブと判断されると自動的に削除されます。詳細は「非アクティブタイムアウト」を参照してください。 |
リレーションシップ¶
名前 |
説明 |
|---|---|
failure |
FlowFiles に必要な属性がない場合、または属性の計算に失敗した場合は、このリレーションにルーティングされます。 |
overtook |
先行する FlowFiles を Wait Timeout より長く待ち、それらの FlowFiles を追い越した FlowFile は、この関係にルーティングされます。 |
skipped |
FlowFile は、現在より若いオーダー、つまり到着が遅すぎてスキップされたオーダーは、このリレーションシップにルーティングされます。 |
success |
注文番号が一致する FlowFile は、このリレーションシップにルーティングされます。 |
wait |
注文が一致しない FlowFile は、このリレーションシップにルーティングされます。 |
属性の書き込み¶
名前 |
説明 |
|---|---|
EnforceOrder.startedAt |
このプロセッサーを経由するすべての FlowFiles はこの属性を持ちます。この値は、待機タイムアウトを決定するために使用されます。 |
EnforceOrder.result |
このプロセッサーを経由するすべての FlowFiles は、どのリレーションシップにルーティングされたかを示すこの属性を持ちます。 |
EnforceOrder.detail |
FlowFiles 失敗'または'スキップ'リレーションシップにルーティングされた場合、この属性に詳細が記述されます。 |
EnforceOrder.expectedOrder |
FlowFiles は'wait'または'skipped'関係にルーティングされた場合、 FlowFile が処理されたときの予想される順序を示します。 |