首页 文章

Amazon SWF Flow - 处理超时

提问于
浏览
1

我正在使用亚马逊的Flow框架for Java开展一个相对简单的工作流程 . 我想我现在对所有正在发生的事情有了很好的把握,但我还有一个领域我仍然不确定:我应该如何处理超时?

我的工作流程的主要超时是工作流本身的executionStartToCloseTimeoutSeconds,但我想这个过程是相同的,无论哪个超时触发 . 似乎大部分时间,当任务超时时,它只是有点消失 . 我希望能够知道这种情况何时发生并做某事(例如发送电子邮件或以某种方式记录) . 我四处搜索,找不到任何有关超时发生通知的例子 .

2 回答

  • 2

    http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-timeout-types.html

    对于与活动相关的超时,简短的答案是你的决策者(即工作流程)逻辑应该处理它 . 一旦验证逻辑并进行重试,您就不必担心事情会超时 .

    对于工作流超时,您需要检查工作流历史记录/状态以确定它超时 . 您绝对可以列出工作流程执行,但您可能必须直接通过SWF API(即不通过Flow) . 无论如何,您希望这样做以捕获失败的工作流程 .

    我已经使用并看到与SWF一起使用的模式是通过外部方式跟踪您通过SWF(想想数据库)发送的工作,并使用它来检查已启动但从未完成的工作 . 工作流本身在完成时(或者当它完成主要工作时)更新它,因此找出哪些工作流有问题是微不足道的 .

  • 2

    活动超时以Exception的形式提供给工作流代码,并且可以轻松处理 .

    恕我直言工作流执行超时类似于Unix中的kill -9 . 它会杀死工作流程而不会给它执行清理的机会 . 因此,它的主要用途是确保破坏的工作流实例不会永远保持打开状态 .

    对于所有业务级别超时,不依赖于工作流程超时,而是使用计时器 . 当计时器触发您的工作流时,代码可以执行通知活动并以适当的故障状态终止工作流 .

相关问题