我正在运行Laravel Horizon,但是我注意到Job模型中的设置,例如public $retryAfter
或public $tries
或public $timeout
不起作用(Laravel doc:https://laravel.com/docs/5.8/queues#dealing-with-failed-jobs)
例如,要重试失败的作业4次,请执行以下操作:
public $retryAfter = 4;
不起作用,但是可以在'tries' => 4
配置文件中设置horizon.php
:
'local' => [
'supervisor-1' => [
'connection' => 'redis',
'queue' => ['default'],
'balance' => 'simple',
'processes' => 3,
'tries' => 4,
],
],
为什么这些每个作业的设置不适用于Horizon并且不覆盖常规设置?
谢谢。
答案 0 :(得分:0)
public $tries
肯定可以工作。我在我的项目中有它。
public $retryAfter
值是重试作业之前要等待的秒数。这并不意味着重试作业的次数
public $timeout
值表示继续尝试该工作,直到某个时间点过去(例如,未来5分钟)
您可以通过设置public $tries = 1
进行检查,同时在horizon.php中使用tries => 4
。请记住杀死php artisan horizon:terminate
的地平线过程,并以php artisan horizon
重新开始
答案 1 :(得分:0)
好吧,以为我发现了问题...我使用的Laravel-Horizon 5.7没有实现$retryAfter
变量。