EnforceOrder 2025.5.31.15

バンドル

org.apache.nifi | nifi-standard-nar

説明

1つのノード内で同じデータグループに属する FlowFiles の順序を強制します。PriorityAttributePrioritizer を接続に使用することで、その接続を経由するフローファイルの優先順位を確保することができますが、エラー処理、分岐、その他のフロー設計によっては、 FlowFiles の順番が狂ってしまう可能性があります。EnforceOrder は、 FlowFiles に対してオリジナルの順序を強制するために使用できます。 [IMPORTANT] EnforceOrder の効果を得るためには、 FirstInFirstOutPrioritizer を EVERY の下流の関係 UNTIL で使用する必要があります。 FlowFiles の順序は、 MergeContent などの操作によって物理的に FIXED を取得するか、または最終的な宛先に格納されます。

タグ

順序、ソート

入力要件

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 が処理されたときの予想される順序を示します。