EnforceOrder 2025.5.31.15

Pacote

org.apache.nifi | nifi-standard-nar

Descrição

Aplica a ordem esperada de FlowFiles que pertencem ao mesmo grupo de dados em um único nó. Embora PriorityAttributePrioritizer possa ser usado em uma conexão para garantir que os FlowFiles que passam por essa conexão estejam em ordem de prioridade, dependendo do tratamento de erros, da ramificação e de outros projetos de fluxo, é possível que os FlowFiles fiquem fora de ordem. EnforceOrder pode ser usado para aplicar a ordem original para esses FlowFiles. [Importante] Para que EnforceOrder tenha efeito, FirstInFirstOutPrioritizer deve ser usado em toda relação downstream até que a ordem de FlowFiles seja fisicamente corrigida por meio de uma operação como MergeContent ou seja armazenada no destino final.

Tags

order, sort

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.