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

标签 php laravel queue jobs

问题
我正在调度一个作业来执行一个需要准备好正确执行的资源的操作,所以如果它失败了,它需要在一段时间后重试。
但真正发生的是,如果它失败了,它就不会再被执行。
我正在使用 Supervisor 来管理队列和数据库驱动程序,并且我在默认的 queue.php 配置文件中没有做任何更改。
使用 Laravel 5.8。
我试过的
我已经尝试在作业类中手动设置尝试次数,例如

    public $tries = 5; 
和重试延迟也是一样的
    public $retryAfter = 60;
我的代码
我正在基于使用 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);
    }
最后,它没有到达“作业成功”日志,也没有记录除 1 之外的任何其他尝试。
是否有一些我遗漏的概念或者这段代码有什么错误?

最佳答案

这实际上是一个非常愚蠢的问题。但如果有人和我一样愚蠢,我会在这里解决问题。
在我的 queue.php 默认驱动程序设置为 同步 这会导致程序只运行作业句柄方法,但不会对其进行排队,因为正如我所说,我没有更改任何内容。所以我只是将它设置为 数据库它被修复了。

关于php - Laravel 排队的作业在失败时不会重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62906051/

相关文章:

php - Jquery图像裁剪器

php - Laravel - 仅选择连接表中的指定列

php - Laravel 任务计划程序在发送邮件时将地址显示为 localhost

java - 队列的线程安全映射

javascript - 使用2个栈实现队列

php - 尝试使用 VFSStream 测试文件系统操作

php 扩展 >> 错误

php - Laravel Homestead SQLSTATE[HY000] [2002] 服务器移动后连接被拒绝

javascript - Laravel + vue.js 文件上传放

php - Gearman 移除 worker 函数