0

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

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

4

2 回答 2

1

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

从本质上讲,您的工人寿命很长,需要处理几个因素:

  1. 新版本的活动
  2. 各种任务清单
  3. 根据任务列表、活动实现、工作流工作者、主机大小等独立扩展。
  4. 处理错误情况并处理轮询
  5. 处理关闭(在部署和新版本的情况下)
于 2014-12-17T00:08:25.037 回答
0

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

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

于 2015-05-06T19:32:43.147 回答