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