首页 文章

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

提问于
浏览
1

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

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

2 回答

  • 1

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

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

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

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

  • 0

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

相关问题