EnforceOrder 2025.10.2.19¶
번들¶
org.apache.nifi | nifi-standard-nar
설명¶
단일 노드 내에서 동일한 데이터 그룹에 속하는 FlowFiles의 예상 순서를 적용합니다. 오류 처리, 분기 및 기타 흐름 설계에 따라 해당 연결을 통과하는 흐름 파일이 우선 순위에 있는지 확인하기 위해 연결에서 PriorityAttributePrioritizer를 사용할 수 있지만 FlowFiles의 순서가 바뀔 수 있습니다. EnforceOrder는 해당 FlowFiles에 대해 원래 순서를 적용하는 데 사용할 수 있습니다. [IMPORTANT] EnforceOrder를 적용하려면 FlowFiles의 순서가 MergeContent와 같은 작업에 의해 물리적으로 FIXED되거나 최종 대상에 저장될 때까지 모든 다운스트림 관계에서 FirstInFirstOutPrioritizer를 사용해야 합니다.
입력 요구 사항¶
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 이 처리될 때 예상되는 순서를 나타내는 이 특성을 갖게 됩니다. |