Laravel 排队作业在失败时不会重试

Isa*_*edy 3 php queue jobs laravel

问题

我正在分派一个作业来执行一个需要准备好资源才能正确执行的操作,因此如果失败,则需要在一段时间后重试。但真正发生的情况是,如果失败,就不会再次执行。我正在使用 Supervisor 来管理队列和数据库驱动程序,并且我在默认的queue.php配置文件中没有进行任何更改。

使用 Laravel 5.8。

我尝试过的

我已经尝试过手动设置作业类中的尝试次数,例如

    public $tries = 5; 
Run Code Online (Sandbox Code Playgroud)

以及与重试延迟相同的事情

    public $retryAfter = 60;
Run Code Online (Sandbox Code Playgroud)

我的代码

我基于使用 make:job 制作的默认作业模板来实现此作业,我的构造函数和处理方法如下所示:

    public function __construct($event, $data)
    {
        $this->event = $event;
        $this->data = $data;
    }

    public function handle()
    {
        Log::info('Job started | ' . $this->event . ' | Attempt: ' . $this->attempts());
        
        // Executes some logic and throws an Exception if it fails

        Log::info('Job succeeded | ' . $this->event);
    }
Run Code Online (Sandbox Code Playgroud)

最后,它不会到达“作业成功”日志,并且不会记录除 1 之外的任何其他尝试。

我是否缺少一些概念或者这段代码是否有问题?

Isa*_*edy 5

这实际上是一个非常愚蠢的问题。但如果有人像我一样愚蠢,我会把解决方案放在这里。

在我的queue.php中,默认驱动程序设置为同步,这会导致程序只运行作业处理方法,但不会对其进行排队,因为正如我所说,我没有更改任何内容。所以我只是将它设置为数据库,它就被修复了。