Amazon SWF 超时类型 - Amazon Simple Workflow Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon SWF 超时类型

为了确保工作流程执行正确运行,Amazon SWF 允许您设置不同类型的超时。一些超时指定工作流程的总运行时长。其它超时指定活动任务在被分配给工作程序之前所花费的时间以及从排定到完成所花费的时间。Amazon SWF API 中的所有超时都以秒为单位指定。Amazon SWF 还支持字符串NONE作为超时值,表示没有超时。

对于与决策任务和活动任务相关的超时,Amazon SWF 会将事件添加到工作流程执行历史中。事件属性会提供有关所发生超时类型的信息以及受影响的决策任务或活动任务。Amazon SWF 还会安排决策任务。决策程序接收新决策任务时将会在历史中看到超时事件,并会通过调用 RespondDecisionTaskCompleted 操作来采取适当操作。

任务被视为从排定时开始到其关闭为止都处于开启状态。因此,当工作程序处理任务时,任务被报告为开启状态。当工作程序将任务状态报告为已完成已取消失败时,任务关闭。Amazon SWF 还有可能会因超时而关闭任务。

工作流程和决策任务中的超时

下图显示工作流程和决策超时如何与工作流程的生命周期相关:


               工作流程的生命周期,具有超时。

与工作流程和决策任务相关的超时类型有两个:

  • 工作流启动到关闭 (timeoutType: START_TO_CLOSE)— 此超时指定工作流执行完成所需的最长时间。工作流程注册期间,这一超时被设置为默认值,但当工作流程启动时,可用其它值覆盖该默认值。如果超出了此超时,Amazon SWF 会关闭工作流程执行并将event类型WorkflowExecutionTimedOut添加到工作流执行历史中。除了 timeoutType 之外,事件属性还会指定对此工作流程执行有效的 childPolicy。子策略指定上级工作流程执行超时或终止时子工作流程执行的处理方法。例如,如果 childPolicy 被设置为 TERMINATE,则子工作流程执行将被终止。一旦工作流程执行超时,则不能对其执行可视性调用之外的其他任何操作。

  • 决策任务启动到关闭 (timeoutType: START_TO_CLOSE)— 此超时指定相应决策程序完成决策任务可以使用的最长时间。该超时在工作流程类型注册期间设置。如果超出了此超时,会在工作流执行历史中将任务标记为已超时,且 Amazon SWF 会将事件(DecisionTaskTimedOut添加到工作流历史记录。当此决策任务被排定 (scheduledEventId) 且启动 (startedEventId) 时,事件属性中将包含对应事件的 ID。除了添加事件外,Amazon SWF 还会排定新决策任务以警告决策者此决策任务已超时。此超时发生后,使用 RespondDecisionTaskCompleted 完成超时决策任务的尝试将失败。

活动任务中的超时

下图显示超时如何与活动任务的生命周期相关:


               任务的生命周期,具有超时

与活动任务相关的超时类型有四个:

  • 活动任务启动到关闭 (timeoutType: START_TO_CLOSE)— 此超时指定活动工作线程在接收到任务后处理任务可以使用的最长时间。使用 RespondActivityTaskCanceledRespondActivityTaskCompletedRespondActivityTaskFailed 尝试关闭超时的活动任务将会失败。

  • 活动任务检测信号 (timeoutType: HEARTBEAT)— 此超时指定任务在通过RecordActivityTaskHeartbeataction.

  • 活动任务排定到启动 (timeoutType: SCHEDULE_TO_START)— 此超时指定在没有工作线程可执行活动任务时 Amazon SWF 在活动任务超时前等待的时间。一旦超时,过期的任务就不能分配给另一工作程序。

  • 要关闭的活动任务计划 (timeoutType: SCHEDULE_TO_CLOSE)— 此超时指定任务从安排到完成可以使用的时间。最好的做法是,这个值不应该大于任务排定到启动超时与任务启动到关闭超时的总和。

注意

每一个超时类型都有默认值,一般设置为 NONE (无限)。但是任何活动执行的最长时间均被限制为一年。

您在活动类型注册期间设置这些活动的默认值,但当您排定活动任务时您可以用新值覆盖默认值。当这些超时中有任何一个发生时,Amazon SWF 会在event类型ActivityTaskTimedOut添加到工作流历史记录。此事件的 timeoutType 值属性将指定发生了何种超时。对于其中每一个超时,timeoutType 的值都显示在括号中。当活动任务被排定 (scheduledEventId) 且启动 (startedEventId) 时,事件属性中还将包含对应事件的 ID。除了添加事件外,Amazon SWF 还会排定新决策任务以警告决策者已发生超时。