Laravel 8 處理失敗任務(wù)

2021-07-15 16:27 更新

有時你排隊的任務(wù)會失敗。別擔(dān)心,事情并不總是按計劃進(jìn)行!Laravel 提供了一種方便的方法來指定一個任務(wù)應(yīng)該嘗試的最大次數(shù)。當(dāng)任務(wù)超過這個嘗試數(shù)量后,它將被插入到 failed_jobs 數(shù)據(jù)庫表中。 要為 failed_jobs 表創(chuàng)建一個遷移, 你可以使用 queue:failed-table 命令:

php artisan queue:failed-table

php artisan migrate 

然后,在運行你的 隊列處理器 時,你可以使用 --triesqueue:work 命令上指定應(yīng)該嘗試一個任務(wù)的最大次數(shù)。如果你沒有為 --tries 選項指定一個值,那么任務(wù)將只被嘗試一次:

php artisan queue:work redis --tries=3 

此外,您可以使用 --backoff 選項指定 Laravel 在重試失敗的任務(wù)之前應(yīng)該等待多少秒。默認(rèn)情況下,任務(wù)會立即重試:

php artisan queue:work redis --tries=3 --backoff=3 

如果你想在每個任務(wù)的基礎(chǔ)上配置失敗的任務(wù)重試延遲,你可以通過在你的排隊 job 類中定義一個 backoff 屬性來實現(xiàn):

/**
 * The number of seconds to wait before retrying the job.
 *
 * @var int
 */
public $backoff = 3; 

如果你需要更復(fù)雜的邏輯來確定重試延遲,可以在排隊的任務(wù)類上定義一個 backoff 方法:

/**
* 計算在重試任務(wù)之前需等待的秒數(shù)
*
* @return int
*/
public function backoff()
{
    return 3;
} 

你可以通過 backoff 方法返回一個數(shù)組,來輕松配置 「指數(shù)式」延遲,在本實例中,第一次重試延遲為 1 秒,第二次重試延遲為 5 秒,第三次重試延遲為 10 秒:

/**
* 計算在重試任務(wù)之前需等待的秒數(shù)
*
* @return array
*/
public function backoff()
{
    return [1, 5, 10];
} 


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號