EnforceOrder 2025.5.31.15

번들

org.apache.nifi | nifi-standard-nar

설명

단일 노드 내에서 동일한 데이터 그룹에 속하는 FlowFiles 의 예상 순서를 적용합니다. PriorityAttributePrioritizer 를 연결에 사용하여 해당 연결을 통과하는 플로우 파일이 우선 순위를 갖도록 할 수 있지만 오류 처리, 분기 및 기타 플로우 설계에 따라 FlowFiles 이 순서를 벗어날 수 있습니다. EnforceOrder 는 해당 FlowFiles 에 대해 원래 주문을 적용하는 데 사용할 수 있습니다. [중요] EnforceOrder 의 효력을 발생시키려면 FirstInFirstOutPrioritizer 는 EVERY 다운스트림 관계 UNTIL 에서 FlowFiles 의 순서가 MergeContent 와 같은 연산에 의해 물리적으로 FIXED 를 얻거나 최종 대상에 저장되는 경우에 사용해야 합니다.

태그

order, sort

입력 요구 사항

REQUIRED

민감한 동적 속성 지원

false

속성

속성

설명

batch-count

실행 시 EnforceOrder 가 처리할 수 있는 최대 FlowFiles 의 개수입니다.

group-id

EnforceOrder 는 여러 주문 그룹이 가능합니다. ‘Group Identifier’는 FlowFile 이 속한 그룹을 확인하는 데 사용됩니다. 이 속성은 수신 각 FlowFile 에 대해 평가됩니다. 평가 결과가 비어 있으면 FlowFile 이 실패로 라우팅됩니다.

inactive-timeout

비활성 그룹의 상태가 관리 상태에서 지워지는 기간을 나타냅니다. 지정된 기간 동안 그룹에 대한 새 수신 FlowFile 이 없는 경우 그룹이 비활성 상태로 결정됩니다. 비활성 시간 제한은 대기 시간 제한보다 길어야 합니다. 그룹이 이미 지워진 후에 FlowFile 이 늦게 도착하면 새로운 그룹으로 취급되지만, 예상되는 앞의 FlowFiles 이 이미 지워졌으므로 순서가 일치하지 않습니다. FlowFile 은 결국 대기 시간 제한이 초과되어 ‘추월’로 라우팅됩니다. 이를 방지하려면 그룹 상태를 충분히 길게 유지해야 하지만, 동일한 그룹 식별자를 다시 사용할 때는 기간을 짧게 설정하는 것이 도움이 됩니다.

initial-order

그룹의 첫 번째 FlowFile 이 도착하면 초기 대상 주문이 계산되어 관리되는 상태로 저장됩니다. 그 후 대상 주문은 EnforceOrder 에서 추적되기 시작하여 상태 관리 스토어에 저장됩니다. 식 언어를 사용했지만 평가 결과가 정수가 아닌 경우 FlowFile 은 실패로 라우팅되며, 연속된 FlowFiles 이 유효한 초기 순서를 제공할 때까지 초기 순서를 알 수 없습니다.

maximum-order

지정하면 주문이 더 큰 FlowFiles 은 모두 실패로 라우팅됩니다. 이 속성은 지정된 그룹에 대해 한 번만 계산됩니다. 최대 주문이 계산된 후에는 상태 관리 저장소에 유지되어 같은 그룹에 속한 다른 FlowFiles 에 사용됩니다. 식 언어를 사용했지만 평가 결과가 정수가 아닌 경우 FlowFile 은 실패로 라우팅되고 연속된 FlowFiles 이 유효한 최대 순서를 제공할 때까지 최대 순서를 알 수 없게 됩니다.

order-attribute

그룹 내에서 FlowFiles 순서를 적용하는 데 사용할 FlowFile 특성의 이름입니다. FlowFile 에 이 특성이 없거나 값이 정수가 아닌 경우 FlowFile 은 실패로 라우팅됩니다.

wait-timeout

대기 중 FlowFiles 이 ‘추월’ 관계로 라우팅되는 기간을 나타냅니다.

상태 관리

범위

설명

LOCAL

EnforceOrder 는 주문 그룹별로 다음 상태를 사용합니다. ‘<groupId>.target’은 다음에 도착할 주문 번호입니다. FlowFile 과 일치하는 주문이 도착하거나, 대기 시간 초과로 인해 대기 중인 FlowFile 을 FlowFile 이 추월할 경우, 대상 주문은 (FlowFile.order + 1)로 업데이트됩니다. ‘<groupId>.max’는 그룹의 최대 주문 번호입니다. ‘<groupId>.updatedAt’는 그룹의 주문이 마지막으로 업데이트된 시점의 타임스탬프입니다. 이러한 관리 상태는 그룹이 비활성 상태로 확인되면 자동으로 제거됩니다. 자세한 내용은’비활성 시간 제한’을 참조하십시오.

관계

이름

설명

실패

필수 특성이 없거나 특성을 계산하지 못하는 FlowFiles 은 이 관계로 라우팅됩니다

overtook

대기 시간 제한보다 더 오랫동안 FlowFiles 을 대기한 후 FlowFiles 을 추월한 FlowFile 은 이 관계로 라우팅됩니다.

skipped

현재 주문보다 어린 주문, 즉 너무 늦게 도착하여 건너뛴 주문이 있는 FlowFile 은 이 관계로 라우팅됩니다.

성공

주문 번호가 일치하는 FlowFile 은 이 관계로 라우팅됩니다.

wait

순서가 일치하지 않는 FlowFile 은 이 관계로 라우팅됩니다

Writes 특성

이름

설명

EnforceOrder.startedAt

이 프로세서를 통과하는 모든 FlowFiles 에는 이 특성이 적용됩니다. 이 값은 대기 시간 제한을 결정하는 데 사용됩니다.

EnforceOrder.result

이 프로세서를 통과하는 모든 FlowFiles 에는 라우팅된 관계를 나타내는 이 특성이 있습니다.

EnforceOrder.detail

‘실패’ 또는 ‘skip’ 관계로 라우팅된 FlowFiles 에는 세부 사항을 설명하는 이 특성이 적용됩니다.

EnforceOrder.expectedOrder

‘wait’ 또는 ‘skipped’ 관계로 라우팅된 FlowFiles 은 FlowFile 이 처리될 때 예상되는 순서를 나타내는 이 특성을 갖게 됩니다.