即使TTR设置为高值,Laravel工作也会被多个工作人员接收

时间:2017-08-20 14:55:49

标签: php laravel laravel-5 queue beanstalkd

我正在努力完成一项基本上命中第三方API并获取数据以将其插入数据库的工作。有时这些数据需要花费一段时间才能插入。

我正在使用beanstalkd作为我的队列驱动程序,据我所知,如果作业需要超过60秒(这是默认的TTR),它将被推回到就绪队列,等待其他工作人员接收,即使它仍然由一个首先捡起它的工人处理。因此,2名工作人员选择了相同的工作,有时我会得到相同数据库条目的双重甚至三元组。

所以我做了最符合逻辑的事情,就是将TTR提高到6000,接近2小时,我的工作可能花费很长时间。工作需要3-5分钟才能完成。

但即使我将其设定为如此高的价值,不知何故,多个工作仍在继续工作。我错过了什么?似乎存在某种我无法解决的竞争状况。任何人的想法?

0 个答案:

没有答案