AWS SWF简单工作流 - 保持活动工作者脚本运行的最佳方法?

时间:2014-12-16 23:26:46

标签: amazon-web-services amazon-swf

pollForActivityTask方法对请求保持打开轮询的最长时间为60秒。我目前正在每分钟调度一个cron作业来调用我的活动工作文件,以便我的活动工作者机器不断轮询工作。

这是连续队列覆盖的正确方法吗?

2 个答案:

答案 0 :(得分:1)

Java Flow SDK的工作方式以及创建ActivityWorker的方式,为其提供任务列表,域,活动实现和一些其他设置。您同时设置了setPollThreadCountsetTaskExecutorSize。轮询线程长轮询,然后将工作交给执行程序线程,以避免阻止进一步的轮询。您可以在start上调用ActivityWorker来启动它,当想要关闭工作线程时,您可以调用其中一种关闭方法(通常最好调用shutdownAndAwaitTermination)。

基本上你的工人长寿,需要处理几个因素:

  1. 活动的新版本
  2. 各种任务列表
  3. 在任务列表,活动实施,工作流程工作人员,主机大小等方面独立扩展。
  4. 处理错误案例并处理投票
  5. 处理关闭(部署和新版本)

答案 1 :(得分:0)

我最终使用了一个解决方案,其中我有另一个脚本文件,每分钟都由一个cron作业调用。此文件检查活动工作程序是否已在后台运行(如果是,我假设已在当前服务器上处理工作流程执行)。

如果没有活动工作人员,那么之前的长轮询已经完成,我们再次启动活动工作人员脚本。如果已经存在活动工作者,则之前的轮询发现工作流程执行并开始处理,因此我们不会启动另一个活动工作程序。