EnforceOrder 2025.5.31.15¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Description¶
Renforce l’ordre attendu des FlowFiles qui appartiennent au même groupe de données au sein d’un même nœud. Bien que PriorityAttributePrioritizer puisse être utilisé sur une connexion pour s’assurer que les fichiers de flux passant par cette connexion sont dans l’ordre de priorité, en fonction de la gestion des erreurs, des branchements et d’autres conceptions de flux, il est possible que les FlowFiles ne soient pas dans l’ordre. EnforceOrder peut être utilisé pour faire respecter l’ordre original pour ces FlowFiles. [IMPORTANT] Pour que EnforceOrder prenne effet, FirstInFirstOutPrioritizer doit être utilisé pour EVERY relation en aval UNTIL l’ordre des FlowFiles soit FIXED par une opération telle que MergeContent ou être stocké jusqu’à la destination finale.
Exigences en matière d’entrées¶
REQUIRED
Prend en charge les propriétés dynamiques sensibles¶
false
Propriétés¶
Propriété |
Description |
---|---|
batch-count |
Le nombre maximum de FlowFiles que EnforceOrder peut traiter lors d’une exécution. |
group-id |
EnforceOrder est capable de gérer plusieurs groupes de commande. L’identificateur de groupe est utilisé pour déterminer à quel groupe appartient un FlowFile. Cette propriété sera évaluée pour chaque FlowFile entrant. Si le résultat évalué est vide, le FlowFile sera routé vers l’échec. |
inactive-timeout |
Indique la durée après laquelle l’état d’un groupe inactif sera effacé de l’état de gestion. Le groupe est considéré comme inactif si aucun nouveau FlowFile entrant n’a été vu pour un groupe pendant la durée spécifiée. Le délai d’expiration doit être plus long que le délai d’attente. Si un FlowFile arrive en retard après que son groupe a déjà été libéré, il sera traité comme un tout nouveau groupe, mais ne correspondra jamais à l’ordre puisque les FlowFiles précédents attendus sont déjà partis. Le FlowFile finira par dépasser le délai d’expiration et sera routé vers overtook. Pour éviter cela, les états de groupe doivent être conservés suffisamment longtemps, mais une durée plus courte serait utile pour réutiliser le même identificateur de groupe. |
initial-order |
Lorsque le premier FlowFile d’un groupe arrive, l’ordre initial des cibles est calculé et stocké dans l’état géré. Ensuite, la commande cible commencera à être suivie par EnforceOrder et stockée dans le magasin de gestion des états. Si la langue d’expression est utilisée mais que le résultat évalué n’est pas un entier, le FlowFile sera routé vers l’échec et l’ordre initial restera inconnu jusqu’à ce que des FlowFiles consécutifs fournissent un ordre initial valide. |
maximum-order |
Si spécifiés, les FlowFiles dont l’ordre est plus important seront routés vers l’échec. Cette propriété n’est calculée qu’une seule fois pour un groupe donné. Une fois qu’une commande maximale est calculée, elle est conservée dans le magasin de gestion des états et utilisée pour d’autres FlowFiles appartenant au même groupe. Si la langue d’expression est utilisée mais que le résultat évalué n’est pas un entier, le FlowFile sera routé vers l’échec et l’ordre maximum restera inconnu jusqu’à ce que des FlowFiles consécutifs fournissent un ordre maximum valide. |
order-attribute |
Nom de l’attribut FlowFile dont la valeur sera utilisée pour imposer l’ordre des FlowFiles au sein d’un groupe. Si un FlowFile ne possède pas cet attribut, ou si sa valeur n’est pas un entier, le FlowFile sera routé vers l’échec. |
wait-timeout |
Indique la durée après laquelle le FlowFiles en attente sera routé vers la relation overtook. |
Gestion de l’État¶
Champs d’application |
Description |
---|---|
LOCAL |
EnforceOrder utilise les états suivants par groupe de commande : <groupId>.target est un numéro de commande dont l’arrivée est attendue. Lorsqu’un FlowFile avec une commande correspondante arrive, ou qu’un FlowFile dépasse le FlowFile attendu en raison d’un délai d’expiration, la commande cible sera mise à jour (FlowFile. order + 1). <groupId>.max est le nombre maximum de commandes pour un groupe. < groupId>.updatedAt est l’horodatage de la dernière mise à jour de l’ordre d’un groupe. Ces états gérés seront automatiquement supprimés dès qu’un groupe sera considéré comme inactif (voir le délai d’expiration de l’inactivité pour plus de détails). |
Relations¶
Nom |
Description |
---|---|
failure |
Un FlowFiles qui n’a pas les attributs requis ou qui ne parvient pas à les calculer sera routé vers cette relation |
overtook |
Un FlowFile qui a attendu le FlowFiles précédent plus longtemps que le délai d’expiration et qui a dépassé ce FlowFiles sera routé vers cette relation. |
skipped |
Un FlowFile dont l’ordre est plus récent que l’ordre actuel, ce qui signifie qu’il est arrivé trop tard et qu’il a été ignoré, sera routé vers cette relation. |
success |
Un FlowFile avec un numéro de commande correspondant sera routé vers cette relation. |
wait |
Un FlowFile dont la commande ne correspond pas sera routé vers cette relation |
Écrit les attributs¶
Nom |
Description |
---|---|
EnforceOrder.startedAt |
Tous les FlowFiles qui passent par ce processeur auront cet attribut. Cette valeur est utilisée pour déterminer le délai d’expiration. |
EnforceOrder.result |
Tous les FlowFiles passant par ce processeur porteront cet attribut indiquant la relation vers laquelle ils ont été routées. |
EnforceOrder.detail |
Les FlowFiles routés vers une relation de type échec ou ignoré auront cet attribut décrivant les détails. |
EnforceOrder.expectedOrder |
Les FlowFiles routés vers une relation en attente ou ignoré auront cet attribut qui indique l’ordre attendu lors du traitement duFlowFile. |