使用Laravel 4.2中的pda / pheanstalk在PHP中使用JOB_ID NOT FOUND异常Beanstalkd

时间:2015-07-28 10:24:24

标签: laravel queue beanstalkd

我有一个排队系统,我的工作人员用Laravel 4.2编写。每当工匠尝试在队列中获得下一个就绪作业时,我都会收到JOB_ID未找到的异常。

调查我注意到以下内容:

如果下一个就绪作业ID = 74,当我运行artisan queue:work时,它会尝试选择ID为73而不是74的下一个就绪作业,导致找不到JOB_ID异常。

我已经多次重启beanstalkd但问题仍然存在。我还检查了每个工作的TTR并将其设置为3600但仍然没有运气。

以前有人经历过这个吗?钻取Beanstalk PDA库,我注意到当ReleaseCommand类调用它的调度方法时会发生这种情况。

有人经历过这个吗?有什么可能导致这种情况? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果没有正确的代码甚至代码,很难找到这样的问题。但是我们过去了,我可以解释应该如何工作,什么时候会抛出异常。

所以工作者,为工作做好准备,并保持工作,或者beanstalkd服务器将其收回。

  1. 如果您看到作业ID 74,并且当您运行它时,并且您看到它正在提取作业ID 73,则需要确保没有urgent jobs,因为它与ready不同国家工作。
  2. 工作完成后的工作人员想删除该工作。但只有他仍然拥有储备才能做到。如果工作人员没有保留保留,则意味着该工作被beanstalkd服务器收回,或者工作人员本身很快就完成了发布。在BeanStalkd从您的工作人员收回作业之后,TTR默认为60秒,解决时间,因此无法删除它。这些情况需要在您的代码中找到。
  3. 使用精彩的管理控制台面板,帮助您查看作业状态并帮助您进行开发https://github.com/ptrofimov/beanstalk_console