集中式服务器中的 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 知道正在处理的作业,因此它不会在处理作业时将作业提供给其他工人。
我有一个运行 Beanstalk 的服务器,以及一些运行 worker 的独立服务器,在 PHP 中,使用 Pheanstalk。
从工人A找到工作的那一刻起:
$job = $pheanstalk->watch('tube')
->ignore('default')
->reserve();
$data = json_decode($job->getData(), true);
并且在它删除作业 ($pheanstalk->delete($job);
) 的那一刻,它可能会发生几十秒。
Beanstalk 是否知道该作业正在处理并且没有其他工作人员会处理它,或者我会遇到并发问题吗? (两个工人从事同一份工作)。
感谢您的帮助。
BeanstalkD 知道正在处理的作业,因此它不会在处理作业时将作业提供给其他工人。