有时我需要释放一个 Laravel 作业并让它重新加入队列。但是,这样做时,尝试次数会增加。它变为 2,如果您的队列工作器被限制为 1 次尝试,它将永远不会运行。
如何在不增加尝试的情况下释放?
要释放我正在使用:
$this->release(30);
在此行之前,我尝试了以下代码:
$payload = json_decode($this->payload, true);
if (isset($payload['attempts'])) {
$payload['attempts'] = 0;
}
$this->payload = json_encode($payload);
这不起作用。该payload
物业不可用。它似乎存在于Job 类中。
Laravel 框架必须重置计数的代码在RetryCommand
类中。如下:
protected function resetAttempts($payload)
{
$payload = json_decode($payload, true);
if (isset($payload['attempts'])) {
$payload['attempts'] = 0;
}
return json_encode($payload);
}
但是我无法弄清楚如何$payload
从我的工作课程中访问?
有没有更好的方法在不增加尝试次数的情况下释放工作?
我正在使用 Laravel 5.4 和 Redis 队列驱动程序。