EnforceOrder 2025.10.2.19¶
Pacote¶
org.apache.nifi | nifi-standard-nar
Descrição¶
Impõe a ordenação esperada de FlowFiles que pertencem ao mesmo grupo de dados em um único nó. Embora o PriorityAttributePrioritizer possa ser usado em uma conexão para garantir que os arquivos de fluxo que passam por essa conexão estejam em ordem de prioridade, dependendo do tratamento de erros, ramificações e outros designs de fluxo, é possível que os FlowFiles fiquem fora de ordem. O EnforceOrder pode ser usado para impor a ordem original para esses FlowFiles. [IMPORTANT] Para que o EnforceOrder tenha efeito, o FirstInFirstOutPrioritizer deve ser usado em EVERY as relações downstream UNTIL que a ordem dos FlowFiles seja fisicamente FIXED por uma operação como MergeContent ou pelo armazenamento no destino final.
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. |