Amazon SWF Flow - 处理超时
Amazon SWF Flow - Handling timeouts
我正在为 Java 使用 Amazon 的 Flow 框架开发一个相对简单的工作流程。我想我对现在发生的一切都有很好的了解,但我仍然不确定一个领域:我应该如何处理超时?
我的工作流的主要超时是工作流本身的 executionStartToCloseTimeoutSeconds,但我认为无论触发哪个超时,该过程都是相同的。似乎大多数时候,当任务超时时,它就消失了。我希望能够知道这种情况何时发生并做一些事情(例如发送电子邮件或以某种方式记录)。我四处搜索,找不到任何关于发生超时的通知的示例。
http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-timeout-types.html
对于 activity 相关的超时,简短的回答是您的决策程序(即工作流)逻辑应该处理它。一旦您验证了逻辑并进行了重试,您就不必担心事情会超时。
对于工作流超时,您需要检查工作流历史记录/状态以确定它是否超时。您绝对可以列出工作流执行,但您可能必须直接通过 SWF API(即不通过 Flow)。无论如何,您都想执行此操作以捕获失败的工作流。
我使用过并看到与 SWF 一起使用的一种模式是有一种外部方式来跟踪您通过 SWF 发送的工作(想想数据库)并使用它来检查工作开始但从未完成。工作流本身会在完成时(或在完成主要工作时)更新此信息,因此很容易找出哪些工作流有问题。
Activity超时以Exception的形式传递给工作流代码,可以轻松处理。
恕我直言,工作流执行超时类似于 Unix 中的 kill -9。它会在不给它执行清理的机会的情况下终止工作流程。所以它的主要用途是确保损坏的工作流实例不会永远保持打开状态。
对于所有业务级别的超时,不依赖于工作流超时,而是使用计时器。当计时器触发时,您的工作流代码可以执行通知 activity 并以适当的失败状态终止工作流。
我正在为 Java 使用 Amazon 的 Flow 框架开发一个相对简单的工作流程。我想我对现在发生的一切都有很好的了解,但我仍然不确定一个领域:我应该如何处理超时?
我的工作流的主要超时是工作流本身的 executionStartToCloseTimeoutSeconds,但我认为无论触发哪个超时,该过程都是相同的。似乎大多数时候,当任务超时时,它就消失了。我希望能够知道这种情况何时发生并做一些事情(例如发送电子邮件或以某种方式记录)。我四处搜索,找不到任何关于发生超时的通知的示例。
http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-timeout-types.html
对于 activity 相关的超时,简短的回答是您的决策程序(即工作流)逻辑应该处理它。一旦您验证了逻辑并进行了重试,您就不必担心事情会超时。
对于工作流超时,您需要检查工作流历史记录/状态以确定它是否超时。您绝对可以列出工作流执行,但您可能必须直接通过 SWF API(即不通过 Flow)。无论如何,您都想执行此操作以捕获失败的工作流。
我使用过并看到与 SWF 一起使用的一种模式是有一种外部方式来跟踪您通过 SWF 发送的工作(想想数据库)并使用它来检查工作开始但从未完成。工作流本身会在完成时(或在完成主要工作时)更新此信息,因此很容易找出哪些工作流有问题。
Activity超时以Exception的形式传递给工作流代码,可以轻松处理。
恕我直言,工作流执行超时类似于 Unix 中的 kill -9。它会在不给它执行清理的机会的情况下终止工作流程。所以它的主要用途是确保损坏的工作流实例不会永远保持打开状态。
对于所有业务级别的超时,不依赖于工作流超时,而是使用计时器。当计时器触发时,您的工作流代码可以执行通知 activity 并以适当的失败状态终止工作流。