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