Почему мои неудавшиеся рабочие места исчезают после перехода на Laravel 5.8? - PullRequest
3 голосов
/ 10 апреля 2019

У меня есть проект 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

Что я делаю неправильно?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 17 апреля 2019

От: https://laravel.com/docs/5.8/queues

Команда: queue:listen была удалена из документации, и теперь рекомендуемый способ работы с очередями - запустить: queue:work.

См .: https://laravel.com/docs/5.8/queues#running-the-queue-worker

Или вы можете использовать: Laravel Horizon

...