迁移到Laravel 5.8后,为什么我失败的工作消失了?

时间:2019-04-10 13:12:53

标签: laravel laravel-queue laravel-5.8

我有一个带有队列的Laravel项目,每天运行约1000个工作。

当作业失败时,在5.7中,它被移到了fail_jobs表中,我能够重试它。

迁移到Laravel 5.8之后,工作就消失了。

此代码应将作业标记为失败,并将其放置在failed-jobs表中。

    /**
     * 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);
            }
        }
    }
}

队列::失败事件被调用。

主管日志;

[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

我做错了什么?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

发件人: https://laravel.com/docs/5.8/queues

命令:queue:listen已从文档中删除,现在建议使用队列的运行方式为运行:queue:work

请参阅: https://laravel.com/docs/5.8/queues#running-the-queue-worker

或者您可以使用: Laravel Horizon