У меня есть проект Laravel с очередью, выполняющий ~ 1000 заданий в день.
При сбое задания в 5.7 оно перемещалось в таблицу failed_jobs, и я смог повторить его.
После миграции на Laravel 5.8 задания просто исчезают.
Этот код должен пометить задание как сбойное и поместить его в таблицу невыполненных заданий.
/**
* Execute the job.
*/
public function handle()
{
throw new \Exception('WRONG JOB');
}
Журнал супервизорав этом случае:
[2019-04-10 15:07:57][11932] Processing: App\Jobs\ExecuteAction
Кажется, что выполнение останавливается и событие Queue :: failing не вызывается.
Этот код работает, но мне не кажется правильным.
class ExecuteAction implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Execute the job.
*/
public function handle()
{
try {
throw new \Exception('WROOONG');
} catch (\Exception $e) {
if ($this->attempts() < $this->tries) {
$this->release(10);
} else {
$this->fail($e);
}
}
}
}
Вызвано событие Queue :: fail.
Журнал супервизора;
[2019-04-10 15:06:52][11926] Processing: App\Jobs\ExecuteAction
[2019-04-10 15:06:52][11926] Failed: App\Jobs\ExecuteAction
[2019-04-10 15:06:52][11926] Processed: App\Jobs\ExecuteAction
В conf супервизора
command=php /path/to/laravel-project/artisan queue:listen
Что я делаю неправильно?
Спасибо за вашу помощь.