Я использую Laravel Horizon, но заметил, что настройки в модели Job, такие как public $retryAfter, public $tries или public $timeout, не работают (документ Laravel: 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 и не переопределяют общие настройки?
Спасибо.






public $tries точно работает. У меня есть это в моем проекте.
public $retryAfter значение — это количество секунд ожидания перед повторной попыткой задания. Это не означает, сколько раз нужно повторить задание
public $timeout значение означает продолжение выполнения задания до тех пор, пока не пройдет определенный момент времени (например, 5 минут в будущем).
Вы можете проверить, установив public $tries = 1 , имея tries => 4 в Horizon.php. Не забудьте убить процесс Horizon php artisan horizon:terminate и запустить его снова с помощью php artisan horizon
Хорошо, думаю, я нашел проблему... Я использую Laravel-Horizon 5.7, который не реализует переменную $retryAfter.
Хорошо,
public $triesработает, извините за мой вопрос... ноpublic $retryAfterне работает. Он должен переопределить (если я правильно понимаю)'delay' => 0,вhorizon.phpконфигурационном файле. Это правда? Теперь сpublic $tries = 5;задание повторяется 5 раз, но без ожидания значения$retryAfter.