Amazon SWF Flow - 处理超时

时间:2015-09-03 14:47:24

标签: java amazon-web-services amazon-swf

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

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

2 个答案:

答案 0 :(得分:2)

Vector global function

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

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

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

答案 1 :(得分:2)

活动超时以Exception的形式传递给工作流代码,并且可以轻松处理。

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

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