如何使用aws sdk实现SWF指数重试

时间:2016-03-10 01:58:37

标签: amazon-web-services amazon-swf

我正在尝试使用AWS SDK v2实现一个jruby SWF活动工作程序。

我不能使用aws-flow-ruby框架,因为它与jruby(forking)不兼容,所以我写了一个使用线程的工人。

https://github.com/djpate/jflow如果有兴趣的话。

无论如何,他们在框架中实现重试,如果活动失败,它似乎实际上会安排相同的活动。

我在AWS文档中随处可见,无法找到如何使用SDK http://docs.aws.amazon.com/sdkforruby/api/Aws/SWF/Client.html

将该信号发送回SWF

任何人都知道我应该在哪里看看?

1 个答案:

答案 0 :(得分:1)

从这个问题来看,我相信你对SWF是什么/它是如何工作有些困惑。

活动不会运行,也不会孤立地重试。一切都发生在工作流程的背景下。工作流定义告诉您何时重试以及如果活动失败/超时等,如何表现。

处理工作流定义并调度下一件需要发生的事情的工作者称为决策者。 (您将看到可互换使用的决策者和工作流程)。它被称为决策者,因为它根据当前状态决定下一个需要安排的活动是什么。在进行此输入时,决策程序通常将工作流历史记录作为输入。

在Flow中,重试在工作流逻辑中进行编码。基本上如果活动失败,你可以安排它。

所以最后回答你的问题:如果你的目标只是实现活动工作者,你不需要实现任何重试逻辑,就像在决策者级别那样。您应该确保活动与决策程序兼容(您需要确保历史记录和输入/输出约定相同)。 如果您的目标是在SWF之上实现自己的框架,那么您需要实际执行使决策工作所需的艰苦工作。