pollForActivityTask
该方法对请求保持打开轮询的最长时间为 60 秒。我目前每分钟安排一个 cron 作业来调用我的活动工作人员文件,以便我的活动工作人员机器不断轮询工作。
这是获得连续队列覆盖的正确方法吗?
pollForActivityTask
该方法对请求保持打开轮询的最长时间为 60 秒。我目前每分钟安排一个 cron 作业来调用我的活动工作人员文件,以便我的活动工作人员机器不断轮询工作。
这是获得连续队列覆盖的正确方法吗?
Java Flow SDK 执行此操作的方式以及您创建 的方式,ActivityWorker
为其提供任务列表、域、活动实现和一些其他设置。您同时设置setPollThreadCount
和setTaskExecutorSize
。轮询线程长时间轮询,然后将工作移交给执行程序线程,以避免阻塞进一步的轮询。您调用start
来ActivityWorker
启动它,当想要关闭工作人员时,您可以调用其中一种关闭方法(通常最好调用shutdownAndAwaitTermination
)。
从本质上讲,您的工人寿命很长,需要处理几个因素:
我最终使用了一个解决方案,其中我有另一个脚本文件,每分钟由一个 cron 作业调用。该文件检查活动工作者是否已经在后台运行(如果是,我假设当前服务器上已经在处理工作流执行)。
如果那里没有活动工作者,那么前面的长轮询已经完成,我们再次启动活动工作者脚本。如果已经存在活动工作者,那么之前的轮询发现工作流执行并开始处理,因此我们避免启动另一个活动工作者。