EnforceOrder 2025.10.2.19¶
번들¶
org.apache.nifi | nifi-standard-nar
설명¶
Enforces expected ordering of FlowFiles that belong to the same data group within a single node. Although PriorityAttributePrioritizer can be used on a connection to ensure that flow files going through that connection are in priority order, depending on error-handling, branching, and other flow designs, it is possible for FlowFiles to get out-of-order. EnforceOrder can be used to enforce original ordering for those FlowFiles. [IMPORTANT] In order to take effect of EnforceOrder, FirstInFirstOutPrioritizer should be used at EVERY downstream relationship UNTIL the order of FlowFiles physically get FIXED by operation such as MergeContent or being stored to the final destination.
입력 요구 사항¶
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 이 처리될 때 예상되는 순서를 나타내는 이 특성을 갖게 됩니다. |