通常,在队列级别上指定最大尝试次数如下:
php artisan queue:listen connection-name --tries=3
我希望能够在作业类的作业级别上覆盖它(不影响其他作业)。
我可以想到三种方法,但它们可能并不优雅:
注意:
答案 0 :(得分:2)
尝试使用attempts()
方法检查作业类中的当前作业尝试。像下面的东西。
class MyJobClass implements ShouldQueue
{
public function handle()
{
if ($this->attempts() < 3) {
// do job things
}
else {
// delete job
}
}
}
参考laravel资料库https://github.com/laravel/framework/blob/5.3/src/Illuminate/Queue/InteractsWithQueue.php#L21
答案 1 :(得分:0)
从Laravel 5.4开始,您可以在作业类上指定$tries
以覆盖该作业的尝试次数
/**
* The number of times the job may be attempted.
*
* @var int
*/
public $tries = 5;
https://laravel.com/docs/5.7/queues#max-job-attempts-and-timeout