2017-05-04 33 views
0

有时我需要释放Laravel作业并重新加入队列。但是,当这样做时,尝试次数会增加。它变为2,如果你的队列工作者限制为1尝试,它将永远不会运行。发布队列Laravel作业不增加尝试次数

如何在不增加尝试的情况下发布?

要释放我使用:

$this->release(30); 

在此之前行我曾尝试下面的代码:

$payload = json_decode($this->payload, true); 
if (isset($payload['attempts'])) { 
    $payload['attempts'] = 0; 
} 
$this->payload = json_encode($payload); 

这是行不通的。​​属性不可用。它似乎存在于the Job class

代码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队列驱动程序。

回答

0

所以我刚刚删除并重新安排了一份新工作。也许不干净,但它确实有效。

$this->delete(); 

$job = (new ProcessPage($this->pdf))->onQueue('converting'); 
dispatch($job);