EnforceOrder 프로세서
EnforceOrder 프로세서
Snowflake Openflow의 EnforceOrder 프로세서에 대한 문서예요. 단일 노드 내에서 같은 데이터 그룹에 속하는 FlowFile의 예상 순서를 강제하는 프로세서예요.
출처: Snowflake 문서
본문
기능 — 일반 제공(Generally Available)
Openflow Snowflake 배포는 AWS, Azure, GCP 상용(Commercial) 리전의 모든 계정에서 사용할 수 있어요. Openflow BYOC 배포는 AWS 상용(Commercial) 리전의 모든 계정에서 사용할 수 있어요.
번들(Bundle)
org.apache.nifi | nifi-standard-nar
설명(Description)
단일 노드 내에서 같은 데이터 그룹에 속하는 FlowFile의 예상 순서를 강제해요. PriorityAttributePrioritizer를 연결(connection)에 사용하여 해당 연결을 통과하는 FlowFile이 우선순위 순서대로 오도록 할 수 있지만, 오류 처리, 분기 등 흐름 설계에 따라 FlowFile의 순서가 뒤바뀔 수 있어요. EnforceOrder는 그런 FlowFile의 원래 순서를 강제하는 데 사용할 수 있어요. [중요] EnforceOrder가 효과를 발휘하려면, FlowFile의 순서가 MergeContent 같은 작업이나 최종 목적지 저장으로 실제로 고정(FIXED)될 때까지 모든 다운스트림 관계에서 FirstInFirstOutPrioritizer를 사용해야 해요.
태그(Tags)
order, sort
입력 요구사항(Input Requirement)
REQUIRED
민감 동적 속성 지원(Supports Sensitive Dynamic Properties)
false
속성(Properties)
| 속성(Property) | 설명(Description) |
|---|---|
| batch-count | EnforceOrder가 한 번의 실행에서 처리할 수 있는 FlowFile의 최대 수예요. |
| group-id | EnforceOrder는 여러 순서 그룹을 지원해요. 'Group Identifier'는 FlowFile이 속한 그룹을 결정하는 데 사용해요. 이 속성은 각 입력 FlowFile에 대해 평가돼요. 평가 결과가 비어 있으면 FlowFile은 failure로 라우팅돼요. |
| inactive-timeout | 비활성 그룹의 상태가 관리 상태(managed state)에서 지워지는 기간을 나타내요. 지정한 기간 동안 그룹에 새 입력 FlowFile이 보이지 않으면 그룹은 비활성으로 결정돼요. Inactive Timeout은 Wait Timeout보다 길어야 해요. 그룹이 지워진 후에 FlowFile이 늦게 도착하면 새로운 그룹으로 취급되지만, 예상되는 선행 FlowFile이 이미 사라졌으므로 순서와 일치하지 않아요. FlowFile은 결국 대기 타임아웃되어 'overtook'으로 라우팅돼요. 이를 피하려면 그룹 상태를 충분히 오래 유지해야 하지만, 더 짧은 기간은 같은 그룹 식별자를 재사용하는 데 도움이 돼요. |
| initial-order | 그룹의 첫 FlowFile이 도착하면 초기 대상 순서를 계산해 관리 상태에 저장해요. 이후에는 EnforceOrder가 대상 순서를 추적하기 시작해 상태 관리 저장소에 저장해요. Expression Language를 사용했는데 평가 결과가 정수가 아니면 FlowFile은 failure로 라우팅되고, 연속된 FlowFile이 유효한 초기 순서를 제공할 때까지 초기 순서는 알 수 없는 상태로 남아요. |
| maximum-order | 지정하면 더 큰 순서를 가진 FlowFile은 failure로 라우팅돼요. 이 속성은 주어진 그룹에 대해 한 번만 계산돼요. 최대 순서가 계산되면 상태 관리 저장소에 저장되어 같은 그룹의 다른 FlowFile에 사용돼요. Expression Language를 사용했는데 평가 결과가 정수가 아니면 FlowFile은 failure로 라우팅되고, 연속된 FlowFile이 유효한 최대 순서를 제공할 때까지 최대 순서는 알 수 없는 상태로 남아요. |
| order-attribute | 그룹 내 FlowFile의 순서를 강제하는 데 사용할 FlowFile 속성 이름이에요. FlowFile에 이 속성이 없거나 값이 정수가 아니면 failure로 라우팅돼요. |
| wait-timeout | 대기 중인 FlowFile이 'overtook' 관계로 라우팅되는 기간을 나타내요. |
상태 관리(State management)
| 범위(Scopes) | 설명(Description) |
|---|---|
| LOCAL | EnforceOrder는 순서 그룹별로 다음 상태를 사용해요. ' |
관계(Relationships)
| 이름(Name) | 설명(Description) |
|---|---|
| failure | 필요한 속성이 없거나 계산에 실패한 FlowFile은 이 관계로 라우팅돼요. |
| overtook | 선행 FlowFile을 Wait Timeout보다 오래 기다렸다가 그 FlowFile을 추월한 FlowFile은 이 관계로 라우팅돼요. |
| skipped | 현재보다 오래된(너무 늦게 도착해 건너뛴) 순서를 가진 FlowFile은 이 관계로 라우팅돼요. |
| success | 일치하는 순서 번호를 가진 FlowFile은 이 관계로 라우팅돼요. |
| wait | 일치하지 않는 순서를 가진 FlowFile은 이 관계로 라우팅돼요. |
속성 기록(Writes attributes)
| 이름(Name) | 설명(Description) |
|---|---|
| EnforceOrder.startedAt | 이 프로세서를 거치는 모든 FlowFile은 이 속성을 가져요. 이 값은 대기 타임아웃을 결정하는 데 사용돼요. |
| EnforceOrder.result | 이 프로세서를 거치는 모든 FlowFile은 라우팅된 관계를 나타내는 이 속성을 가져요. |
| EnforceOrder.detail | 'failure' 또는 'skipped' 관계로 라우팅된 FlowFile은 세부 정보를 설명하는 이 속성을 가져요. |
| EnforceOrder.expectedOrder | 'wait' 또는 'skipped' 관계로 라우팅된 FlowFile은 처리 시 예상 순서를 나타내는 이 속성을 가져요. |