2017-05-04 42 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);