我正在使用Amazon的Flow框架for Java开发一个相对简单的工作流。我认为我对现在发生的一切都有很好的把握,但是我还有一个不确定的地方:我该如何处理超时呢?
我的工作流的主要超时是工作流本身上的executionStartToCloseTimeoutSeconds,但我可以想象,无论触发哪种超时,流程都是相同的。似乎大多数时候,当任务超时时,它就会消失。我希望能够知道什么时候发生这种情况,并做些什么(例如发送电子邮件或以某种方式记录它)。我四处搜索,找不到任何通知超时发生的例子。
发布于 2015-09-03 15:43:42
http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-timeout-types.html
对于与活动相关的超时,简单的回答是您的决策器(即工作流)逻辑应该处理它。一旦您验证了逻辑并进行了重新尝试,您就不必担心超时的事情了。
对于工作流超时,您需要检查工作流历史记录/状态,以确定其超时。您肯定可以列出工作流执行,但是您可能必须直接通过SWF (即不是通过流)。无论如何,您都希望这样做,以捕获失败的工作流。
我在SWF中使用和看到的一种模式是有一种外部方式来跟踪通过SWF (想想DB)发送的工作,并使用它来检查已经开始和从未完成的工作。工作流本身在完成(或正在完成主要工作)时更新这一点,因此找出哪些工作流是有问题的是很简单的。
发布于 2015-09-03 17:40:59
活动超时以异常的形式传递给工作流代码,并且可以轻松处理。
IMHO工作流执行超时类似于Unix中的杀死-9。它杀死了工作流,却没有给它执行清理的机会。因此,它的主要用途是确保中断的工作流实例不会永远保持打开状态。
对于所有业务级超时不依赖于工作流超时,请使用计时器。当计时器触发时,您的工作流代码可以执行通知活动,并以适当的失败状态终止工作流。
https://stackoverflow.com/questions/32378888
复制相似问题