EnforceOrder 2025.5.31.15¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Beschreibung¶
Erzwingt die erwartete Reihenfolge von FlowFiles, die innerhalb eines einzelnen Knotens zur gleichen Datengruppe gehören. Obwohl PriorityAttributePrioritizer für eine Verbindung verwendet werden kann, um sicherzustellen, dass die FlowFiles, die diese Verbindung durchlaufen, in der richtigen Reihenfolge sind, ist es je nach Fehlerbehandlung, Verzweigung und anderen Ablaufdesigns möglich, dass FlowFiles nicht mehr in der richtigen Reihenfolge sind. EnforceOrder kann verwendet werden, um die ursprüngliche Reihenfolge für diese FlowFiles zu erzwingen. [WICHTIG] Um die Wirkung von EnforceOrder zu erzielen, sollte FirstInFirstOutPrioritizer in jeder nachgelagerten Beziehung verwendet werden, bis die Reihenfolge von FlowFiles physisch durch eine Operation wie MergeContent festgelegt oder am Endziel gespeichert wird.
Eingabeanforderung¶
REQUIRED
Unterstützt sensible dynamische Eigenschaften¶
false
Eigenschaften¶
Eigenschaft |
Beschreibung |
---|---|
batch-count |
Die maximale Anzahl von FlowFiles, die EnforceOrder bei einer Ausführung verarbeiten kann. |
group-id |
EnforceOrder unterstützt mehrere Sortiergruppen. Der „Group Identifier“ wird verwendet, um festzustellen, zu welcher Gruppe ein FlowFile gehört. Diese Eigenschaft wird bei jedem eingehenden FlowFile ausgewertet. Wenn das ausgewertete Ergebnis leer ist, wird das FlowFile an die Beziehung „failure“ weitergeleitet. |
inactive-timeout |
Gibt die Dauer an, nach der der Status einer inaktiven Gruppe aus dem verwalteten Status gelöscht wird. Eine Gruppe wird als inaktiv eingestuft, wenn für sie seit einer bestimmten Zeit kein neue eingehendes FlowFile mehr gesehen wurde. Das Timeout für Inaktivität muss länger sein als das Timeout für Warten. Wenn ein FlowFile zu spät eintrifft, nachdem seine Gruppe bereits gelöscht wurde, wird es wie eine ganz neue Gruppe behandelt, passt aber nicht mehr in die Reihenfolge, da die erwarteten vorangehenden FlowFiles bereits weg sind. Das FlowFile wird schließlich aufgrund der Wartezeit ablaufen und an die Beziehung „overtook“weitergeleitet. Um dies zu vermeiden, sollten die Gruppenstatus lange genug aufbewahrt werden. Eine kürzere Dauer wäre jedoch hilfreich, um denselben Bezeichner wiederverwenden zu können. |
initial-order |
Wenn das erste FlowFile einer Gruppe eintrifft, wird die anfängliche Zielreihenfolge berechnet und im verwalteten Status gespeichert. Danach wird die Zielreihenfolge von EnforceOrder verfolgt und im Statusmanagementspeicher gespeichert. Wenn Expression Language verwendet wird, das Ergebnis aber keine Ganzzahl ist, wird das FlowFile an die Beziehung „failure“ weitergeleitet, und die ursprüngliche Reihenfolge bleibt unbekannt, bis die nachfolgenden FlowFiles eine gültige ursprüngliche Reihenfolge liefern. |
maximum-order |
Wenn angegeben, werden alle FlowFiles mit einer höheren Reihenfolge an die Beziehung „failure“ weitergeleitet. Diese Eigenschaft wird nur einmal für eine bestimmte Gruppe berechnet. Nachdem eine maximale Reihenfolge berechnet wurde, wird sie im Statusmanagementspeicher gespeichert und für andere FlowFiles, die zur gleichen Gruppe gehören, verwendet. Wenn Expression Language verwendet wird, aber das ausgewertete Ergebnis keine Ganzzahl war, dann wird das FlowFile an die Beziehung „failure“ weitergeleitet, und die maximale Reihenfolge bleibt unbekannt, bis aufeinanderfolgende FlowFiles eine gültige maximale Reihenfolge liefert. |
order-attribute |
Der Name eines FlowFile-Attributs, dessen Wert verwendet wird, um die Reihenfolge der FlowFiles innerhalb einer Gruppe festzulegen. Wenn das FlowFile dieses Attribut nicht hat oder sein Wert keine Ganzzahl ist, wird das FlowFile an die Beziehung „failure“ weitergeleitet. |
wait-timeout |
Gibt die Dauer an, nach der wartende FlowFiles an die Beziehung „overtook“ weitergeleitet werden. |
Statusmanagement¶
Bereiche |
Beschreibung |
---|---|
LOCAL |
EnforceOrder verwendet folgende Zustände pro Bestellgruppe: „<groupId>.target“ ist eine Ordnungsnummer, auf deren Eintreffen als Nächstes gewartet wird. Wenn ein FlowFile mit einer passenden Reihenfolge eintrifft oder ein FlowFile das FlowFile, auf das gewartet wird, wegen eines Warte-Timeouts überholt, wird die Zielreihenfolge auf (FlowFile. order + 1) aktualisiert. ‚<groupId>.max ist die maximale Ordnungsnummer für eine Gruppe. „<groupId>.updatedAt“ ist ein Zeitstempel, der angibt, wann die Bestellung einer Gruppe zuletzt aktualisiert wurde. Diese verwalteten Status werden automatisch entfernt, sobald eine Gruppe als inaktiv eingestuft wird. Weitere Informationen finden Sie unter „Timeout wegen Inaktivität“. |
Beziehungen¶
Name |
Beschreibung |
---|---|
failure |
FlowFiles, die nicht über die erforderlichen Attribute verfügen oder diese nicht berechnen können, werden an diese Beziehung weitergeleitet. |
overtook |
Ein FlowFile, das länger als das Warte-Timeout auf die vorangehenden FlowFiles gewartet hat und diese FlowFiles überholt hat, wird an diese Beziehung weitergeleitet. |
skipped |
Ein FlowFile, dessen Reihenfolge jünger als die aktuelle ist, d. h., das zu spät angekommen ist und übersprungen wurde, wird an diese Beziehung weitergeleitet. |
success |
Ein FlowFile mit einer passenden Ordnungsnummer wird an diese Beziehung weitergeleitet. |
wait |
Ein FlowFile mit nicht einer nicht passenden Ordnungsnummer wird an diese Beziehung weitergeleitet. |
Schreibt Attribute¶
Name |
Beschreibung |
---|---|
EnforceOrder. startedAt |
Alle FlowFiles, die diesen Prozessor durchlaufen, haben dieses Attribut. Dieser Wert wird verwendet, um die Wartezeit zu bestimmen. |
EnforceOrder.result |
Alle FlowFiles, die diesen Prozessor durchlaufen, werden mit diesem Attribut versehen, das angibt, an welche Beziehung sie weitergeleitet wurden. |
EnforceOrder.detail |
FlowFiles, die an die Beziehungen „failure“ oder „skipped“ weitergeleitet werden, haben dieses Attribut, das Details beschreibt. |
EnforceOrder. expectedOrder |
FlowFiles, die an die Beziehung „wait“ oder „skipped“ weitergeleitet wurden, haben dieses Attribut, das die erwartete Reihenfolge angibt, in der das FlowFile bearbeitet wurde. |