У меня есть проект 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 :: failing.
Журнал супервайзера;
[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
В конф.
command=php /path/to/laravel-project/artisan queue:listen
Что я делаю не так?
Спасибо за помощь.
database
. - person odupont   schedule 10.04.2019public $tries = 5;
в своем классе работы, но, похоже, он не используется. - person odupont   schedule 19.04.2019