设置任务优先级 - Amazon Simple Workflow Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置任务优先级

默认情况下,任务列表上的任务将基于其到达时间进行交付:首先安排的任务通常会尽可能首先运行。通过设置可选任务优先级,您可以优先处理某些任务:Amazon SWF 将尝试先交付任务列表上具有较高优先级的任务,然后交付具有较低优先级的任务。

注意

先安排的任务通常先运行,但是也不一定。

您可以同时为工作流和活动设置任务优先级。工作流的任务优先级既不影响其安排的任何活动的任务优先级,也不影响其开始的任何子工作流。活动或工作流的默认优先级是由您或在注 Amazon SWF 过程中设置的,除非在安排活动或启动工作流执行时覆盖了注册任务优先级,否则始终使用默认优先级。

任务优先级值的范围可为“-2147483648”到“2147483647”,数字越大优先级越高。如果您未为活动或工作流设置任务优先级,则将为其分配零(“0”)优先级。

设置工作流的任务优先级

在您注册或开始工作流时,可以设置其任务优先级。注册工作流类型时设置的任务优先级将用作执行该类型的任何工作流的默认优先级,除非该优先级在开始执行工作流时被覆盖。

要使用默认任务优先级注册工作流类型,请将defaultTaskPriority选项时使用RegisterWorkflowType:操作

{ "domain": "867530901", "name": "expeditedOrderWorkflow", "version": "1.0", "description": "Expedited customer orders workflow", "defaultTaskStartToCloseTimeout": "600", "defaultExecutionStartToCloseTimeout": "3600", "defaultTaskList": {"name": "mainTaskList"}, "defaultTaskPriority": "10", "defaultChildPolicy": "TERMINATE" }

您可以在使用 StartWorkflowExecution 开始工作流执行时覆盖工作流类型的已注册的任务优先级:

{ "childPolicy": "TERMINATE", "domain": "867530901", "executionStartToCloseTimeout": "1800", "input": "arbitrary-string-that-is-meaningful-to-the-workflow", "tagList": ["music purchase", "digital", "ricoh-the-dog"], "taskList": {"name": "specialTaskList"}, "taskPriority": "-20", "taskStartToCloseTimeout": "600", "workflowId": "20110927-T-1", "workflowType": {"name": "customerOrderWorkflow", "version": "1.0"}, }

您还可以在开始子工作流或将一个工作流作为新的工作流继续执行(如利用 RespondDecisionTaskCompleted 响应决策)时覆盖已注册的任务优先级。

要设置子工作流的任务优先级,请在 startChildWorkflowExecutionDecisionAttributes 中提供值:

{ "taskToken": "AAAAKgAAAAEAAAAAAAAAA...", "decisions": [ { "decisionType": "StartChildWorkflowExecution", "startChildWorkflowExecutionDecisionAttributes": { "childPolicy": "TERMINATE", "control": "digital music", "executionStartToCloseTimeout": "900", "input": "201412-Smith-011x", "taskList": {"name": "specialTaskList"}, "taskPriority": "5", "taskStartToCloseTimeout": "600", "workflowId": "verification-workflow", "workflowType": { "name": "MyChildWorkflow", "version": "1.0" } } } ] }

在将一个工作流作为新的工作流继续执行时,请在 continueAsNewWorkflowExecutionDecisionAttributes 中设置任务优先级:

{ "taskToken": "AAAAKgAAAAEAAAAAAAAAA...", "decisions": [ { "decisionType": "ContinueAsNewWorkflowExecution", "continueAsNewWorkflowExecutionDecisionAttributes": { "childPolicy": "TERMINATE", "executionStartToCloseTimeout": "1800", "input": "5634-0056-4367-0923,12/12,437", "taskList": {"name": "specialTaskList"}, "taskStartToCloseTimeout": "600", "taskPriority": "100", "workflowTypeVersion": "1.0" } } ] }

设置活动的任务优先级

您可以在注册或安排活动时设置该活动的任务优先级。注册活动类型时设置的任务优先级将用作运行活动时的默认优先级,除非该优先级在安排活动时被覆盖。

要在注册活动类型时设置任务优先级,请将defaultTaskPriority选项时使用RegisterActivityType:操作

{ "defaultTaskHeartbeatTimeout": "120", "defaultTaskList": {"name": "mainTaskList"}, "defaultTaskPriority": "10", "defaultTaskScheduleToCloseTimeout": "900", "defaultTaskScheduleToStartTimeout": "300", "defaultTaskStartToCloseTimeout": "600", "description": "Verify the customer credit card", "domain": "867530901", "name": "activityVerify", "version": "1.0" }

要计划具有任务优先级的任务,请使用taskPriority选项调度活动时使用RespondDecisionTaskCompleted:操作

{ "taskToken": "AAAAKgAAAAEAAAAAAAAAA...", "decisions": [ { "decisionType": "ScheduleActivityTask", "scheduleActivityTaskDecisionAttributes": { "activityId": "verify-account", "activityType": { "name": "activityVerify", "version": "1.0" }, "control": "digital music", "input": "abab-101", "taskList": {"name": "mainTaskList"}, "taskPriority": "15" } } ] }

返回任务优先级信息的操作

您可从以下 Amazon SWF 操作中获取有关设置任务优先级(或设置默认任务优先级)的信息: