集中式服务器中的 Beanstalk,如何避免 worker 的重复工作?

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

我有一个运行 Beanstalk 的服务器,以及一些运行 worker 的独立服务器,在 PHP 中,使用 Pheanstalk。

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

$job = $pheanstalk->watch('tube')
    ->ignore('default')
    ->reserve();

$data = json_decode($job->getData(), true);

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

Beanstalk 是否知道该作业正在处理并且没有其他工作人员会处理它,或者我会遇到并发问题吗? (两个工人从事同一份工作)。

感谢您的帮助。

BeanstalkD 知道正在处理的作业,因此它不会在处理作业时将作业提供给其他工人。