【问题标题】:How to push back a job to the last of the queue in Laravel Beanstalk?如何将作业推回 Laravel Beanstalk 中的最后一个队列?
【发布时间】:2015-10-14 22:09:12
【问题描述】:

如何将作业推回队列。

我累了

$job->release()

但它正在推回队列,因此队列中的下一个作业是同一个作业,我希望将作业发送回队列的最后一个,最后执行。我该怎么做?

【问题讨论】:

  • 删除作业并将其作为新作业推回。
  • 还有像 $job->release() 这样的解决方案吗?
  • 有一个priority参数可以用来发布,但是Laravel的jobrelease方法并没有提供任何传递它的方法。它只使用从Pheanstalk(它用来处理Benastalk 队列的包)获得的默认优先级常量Pheanstalk::DEFAULT_PRIORITY。因此,如果您希望能够处理更具体的队列属性,您应该改用 Pheanstalk。

标签: php laravel laravel-4 queue beanstalkd


【解决方案1】:

您可以抛出异常导致作业失败。

根据 queue:work 将触发的尝试次数,作业最终将出现在 failed_jobs 表中(如果您已定义该表)。

然后您可以将作业从 failed_jobs 表推回队列。

【讨论】: