接近亚马逊瑞士法郎的坠毁工人

时间:2016-01-26 02:16:15

标签: amazon-web-services amazon-s3 amazon-swf aws-ruby-flow

我们目前正在Amazon SWF中实施工作流程,我们从Web应用程序提交作业/工作流程执行。使用Ruby Flow框架进行设置时,一切都非常快速且轻松。只要决策者/活动工作者不崩溃,我们似乎能够优雅地处理大多数问题/异常。

我的问题是,在决策程序进程在工作流程执行的中途崩溃的情况下,通常的做法是什么?如果任务以这种方式失败,是否可以推送SNS通知(我没有看到任何示例)或某些事情向另一个进程表明存在意外故障/崩溃?

2 个答案:

答案 0 :(得分:1)

有各种类型的“决定者”失败。

  1. 工作流工作人员在处理决策时崩溃。在指定的超时后自动重新安排决策任务。确保工作流程类型defaultTaskStartToCloseTimeout未设置得太高。如果此崩溃与代码正确性无关,则处理重新安排的任务并正常继续执行工作流。

  2. 工作流工作者不会崩溃,但工作流程执行本身也会失败。在这种情况下,您可以使用ListClosedWorkflowExecutions来计算此类失败的工作流程。

  3. 由于Flow框架中的错误导致RespondDecisionTaskCompleted失败,因此工作流工作人员不会崩溃,但决策任务无法完成。从SWF的角度来看,任务永远不会完成,它在某些时候被标记为超时并重新安排。由于bug仍然存在,新任务再次永远不会完成并重新安排,等等。正在经历此类问题的工作流程执行具有包含重复的“决策任务已调度,决策任务超时”事件的尾部的历史记录。如果您的工作流程具有已知的执行时间限制,那么解决此问题的最佳方法是设置合理的 executionStartToCloseTimeout 并查找超时的工作流程执行。如果决策任务超时设置得太低,则此类工作流也可以在执行超时之前达到历史记录大小的限制。

答案 1 :(得分:0)

所有swf指标均未发布到云监视。因此,所有已完成和失败的工作流程都会将指标发送到云观察,您可以在其中创建警报,以便在任何工作流失败时向您发送通知