Laravel 8 最大异常数
有时,你可能希望指定某个任务可尝试很多次,但如果重试次数超过了给定数量,触发了异常,则该任务应该失败。为了实现这一点,你可以在你的任务类中定义一个 maxExceptions
属性:
<?php
namespace App\Jobs;
class ProcessPodcast implements ShouldQueue
{
/**
* 任务可尝试的次数
*
* @var int
*/
public $tries = 25;
/**
* 任务失败前允许的最大异常数
*
* @var int
*/
public $maxExceptions = 3;
/**
* 执行任务
*
* @return void
*/
public function handle()
{
Redis::throttle('key')->allow(10)->every(60)->then(function () {
// 获得锁,处理podcast...
}, function () {
// 无法获得锁...
return $this->release(10);
});
}
}
在此示例中,如果应用程序无法获得 Redis 锁,则任务将释放十秒钟,并将继续重试 25 次。但是,如果任务抛出三个未处理的异常,则该任务将失败。