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.
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. |