W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
有時你排隊的任務(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
然后,在運行你的 隊列處理器 時,你可以使用 --tries
在 queue: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];
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: