기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
작업 우선 순위 설정
기본적으로 작업 목록의 작업은 도착 시간에 따라 제공됨: 가능한 한 먼저 예약된 작업이 일반적으로 먼저 실행됩니다. 선택적 작업 우선 순위를 설정해 특정 작업에 우선 순위를 부여할 수 있음: Amazon SWF는 작업 목록에서 우선 순위가 높은 작업을 우선 순위가 낮은 작업보다 먼저 제공하려고 합니다.
워크플로 및 활동 둘 다에 대해 작업 우선 순위를 설정할 수 있습니다. 워크플로의 작업 우선 순위는 워크플로가 예약한 활동 작업의 우선 순위에 영향을 미치지 않고 워크플로가 시작한 하위 워크플로에도 영향을 미치지 않습니다. 활동 또는 워크플로의 기본 우선 순위는 등록 중(사용자 또는 Amazon SWF가) 설정하지만 활동을 예약하거나 워크플로 실행을 시작하는 동안 재정의하지 않는 한 항상 등록된 작업 우선 순위가 사용됩니다.
작업 우선 순위 값의 범위는 "-2147483648" ~ "2147483647"일 수 있으며 숫자가 클수록 우선 순위가 높음을 나타냅니다. 활동 또는 워크플로에 대해 작업 우선 순위를 설정하지 않으면 우선 순위 0이 할당됩니다.
워크플로의 작업 우선 순위 설정
워크플로를 등록 또는 시작할 때 워크플로의 작업 우선 순위를 설정할 수 있습니다. 워크플로 실행 설정 시 재정의되지 않는 한 워크플로 유형 등록 시 설정한 작업 우선 순위가 해당 형의 워크플로 실행에 대해 기본값으로 사용됩니다.
기본 작업 우선 순위로 워크플로 유형을 등록하려면 선언 시 WorkflowRegistrationOptions에서 defaultTaskPriority 옵션을 설정합니다.
@Workflow @WorkflowRegistrationOptions( defaultTaskPriority = 10, defaultTaskStartToCloseTimeoutSeconds = 240) public interface PriorityWorkflow { @Execute(version = "1.0") void startWorkflow(int a); }
또한 워크플로를 시작할 때 워크플로의 taskPriority를 설정할 수 있습니다. 이로써 등록된(기본) 작업 우선 순위는 재정의됩니다.
StartWorkflowOptions priorityWorkflowOptions = new StartWorkflowOptions().withTaskPriority(10); PriorityWorkflowClientExternalFactory cf = new PriorityWorkflowClientExternalFactoryImpl(swfService, domain); priority_workflow_client = cf.getClient(); priority_workflow_client.startWorkflow( "Smith, John", priorityWorkflowOptions);
이외에도 하위 워크플로를 시작하거나 워크플로를 새로 진행할 때 작업 우선 순위를 설정할 수 있습니다. 예를 들어, ContinueAsNewWorkflowExecutionParameters 또는 StartChildWorkflowExecutionParameters에서 taskPriority 옵션을 설정할 수 있습니다.
활동의 작업 우선 순위 설정
활동을 등록하거나 예약할 때 활동에 대한 작업 우선 순위를 설정할 수 있습니다. 활동 예약 재정의하지 않는 한 작업 유형 등록 시 설정한 작업 우선 순위가 활동 실행 시 기본 우선 순위로 사용됩니다.
기본 작업 우선 순위로 활동 유형을 등록하려면 선언 시 ActivityRegistrationOptions에서 defaultTaskPriority 옵션을 설정합니다.
@Activities(version = "1.0") @ActivityRegistrationOptions( defaultTaskPriority = 10, defaultTaskStartToCloseTimeoutSeconds = 120) public interface ImportantActivities { int doSomethingImportant(); }
또한 활동을 예약할 때 활동의 taskPriority를 설정할 수 있습니다. 이로써 등록된(기본) 작업 우선 순위는 재정의됩니다.
ActivitySchedulingOptions activityOptions = new ActivitySchedulingOptions.withTaskPriority(10); ImportantActivitiesClient activityClient = new ImportantActivitiesClientImpl(); activityClient.doSomethingImportant(activityOptions);