集中服务器中的Beanstalk,如何避免工作人员重复工作


Beanstalk in a centralized server, how to avoid duplicate work for a worker?

我有一个运行Beanstalk的服务器,还有一些独立的服务器,用PHP和Pheanstalk运行worker。

从工人a找到工作的那一刻起:

$job = $pheanstalk->watch('tube')
    ->ignore('default')
    ->reserve();
$data = json_decode($job->getData(), true);

在它删除作业($pheanstalk->delete($job);)的那一刻,可能会发生几十秒钟。

Beanstalk是否知道正在处理作业,而其他工作人员不会拥有它,或者我是否会遇到并发问题?(两个工人做同样的工作)。

谢谢你的帮助。

BeanstalkD知道正在处理的作业,因此在处理作业时不会将作业提供给另一个工人。