EnforceOrder 2025.10.2.19¶
Pacote¶
org.apache.nifi | nifi-standard-nar
Descrição¶
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.
Requisito de entrada¶
REQUIRED
Oferece suporte a propriedades dinâmicas confidenciais¶
falso
Propriedades¶
Propriedade |
Descrição |
|---|---|
batch-count |
O número máximo de FlowFiles que EnforceOrder pode processar em uma execução. |
group-id |
EnforceOrder tem capacidade para vários grupos de pedidos. “Group Identifier” (identificador de grupo) é usado para determinar a qual grupo o FlowFile pertence. Essa propriedade será avaliada a cada FlowFile de entrada. Se o resultado avaliado for vazio, o FlowFile será encaminhado para falha. |
inactive-timeout |
Indica a duração após a qual o estado de um grupo inativo será removido do estado gerenciado. O grupo é considerado inativo se não houver nenhum novo FlowFile de entrada para um grupo por um período especificado. O tempo limite de inatividade deve ser maior que o tempo limite de espera. Se um FlowFile chegar atrasado depois que seu grupo já tiver sido removido, ele será tratado como um grupo totalmente novo, mas nunca corresponderá à ordem, pois os FlowFiles anteriores esperados já terão ido. O FlowFile acabará atingindo o tempo limite de espera e será encaminhado para “overtook”. Para evitar isso, os estados do grupo devem ser mantidos por tempo suficiente; no entanto, uma duração mais curta seria útil para reutilizar o mesmo identificador de grupo novamente. |
initial-order |
Quando o primeiro FlowFile de um grupo chegar, a ordem de destino inicial será calculada e armazenada no estado gerenciado. Depois disso, o pedido de destino começará a ser rastreado por EnforceOrder e armazenado no armazenamento de gerenciamento de estado. Se a linguagem de expressão for usada, mas o resultado avaliado não for um número inteiro, o FlowFile será encaminhado para a falha e a ordem inicial será desconhecida até que os FlowFiles consecutivos forneçam uma ordem inicial válida. |
maximum-order |
Se especificado, quaisquer FlowFiles que tenha uma ordem maior serão encaminhados para falha. Essa propriedade é calculada apenas uma vez para um determinado grupo. Depois que uma ordem máxima for computada, ela será mantida no armazenamento de gerenciamento de estado e usada para outros FlowFiles pertencentes ao mesmo grupo. Se a linguagem de expressão for usada, mas o resultado avaliado não for um número inteiro, o FlowFile será encaminhado para falha e a ordem máxima será deixada desconhecida até que os FlowFiles consecutivos forneçam uma ordem máxima válida. |
order-attribute |
Um nome de atributo do FlowFile cujo valor será usado para aplicar a ordem de FlowFiles em um grupo. Se um FlowFile não tiver esse atributo, ou se seu valor não for um número inteiro, o FlowFile será encaminhado para falha. |
wait-timeout |
Indica a duração após a qual os FlowFiles em espera serão encaminhados para a relação “overtook”. |
Gerenciamento do estado¶
Escopos |
Descrição |
|---|---|
LOCAL |
EnforceOrder usa os seguintes estados por grupo de pedidos: “<groupId>.target” é um número de pedido que está sendo aguardado para chegar em seguida. Quando um FlowFile com um pedido correspondente chegar, ou um FlowFile ultrapassar o FlowFile que está sendo aguardado devido ao tempo limite de espera, o pedido de destino será atualizado para (FlowFile.order + 1). “<groupId>.max” é o número máximo de pedidos de um grupo. “<groupId>.updatedAt” é um carimbo de data/hora em que a ordem de um grupo foi atualizada pela última vez. Esses estados gerenciados serão removidos automaticamente quando um grupo for determinado como inativo; consulte “Tempo limite de inatividade” para obter detalhes. |
Relações¶
Nome |
Descrição |
|---|---|
failure |
FlowFiles que não tenhan os atributos necessários ou que não consigam computá-los serão encaminhados para essa relação |
overtook |
Um FlowFile que esperou pelos FlowFiles anteriores por mais tempo do que o tempo limite de espera e ultrapassou esses FlowFiles, será encaminhado para essa relação. |
skipped |
Um FlowFile que tenha um pedido anterior ao atual, o que significa que chegou tarde demais e foi ignorado, será encaminhado para essa relação. |
success |
Um FlowFile com um número de pedido correspondente será encaminhado para essa relação. |
wait |
Um FlowFile com pedido não correspondente será encaminhado para essa relação |
Grava atributos¶
Nome |
Descrição |
|---|---|
EnforceOrder.startedAt |
Todos os FlowFiles que passarem por esse processador terão esse atributo. Esse valor é usado para determinar o tempo limite de espera. |
EnforceOrder.result |
Todos os FlowFiles que passarem por esse processador terão esse atributo indicando para qual relação foram encaminhados. |
EnforceOrder.detail |
FlowFiles encaminhados para a relação “failure” ou “skipped” terão esse atributo descrevendo detalhes. |
EnforceOrder.expectedOrder |
FlowFiles encaminhados para a relação “wait” ou “skipped” terão esse atributo indicando a ordem esperada quando o FlowFile foi processado. |