问题
我正在分派作业以执行需要准备好正确执行资源的操作,因此,如果操作失败,则需要一段时间后重试。 但是真正发生的是,如果失败,它将不再执行。 我正在使用Supervisor来管理队列和数据库驱动程序,并且在默认的 queue.php 配置文件中未做任何更改。
使用Laravel 5.8。
我尝试过的事情
我已经尝试过手动设置作业类中的尝试次数
public $tries = 5;
以及重试延迟相同的东西
public $retryAfter = 60;
我的代码
我正在基于使用make:job制成的默认作业模板来实现此作业,我的构造函数和handle方法如下所示:
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以外的任何其他尝试。
我是否缺少某些概念,或者该代码是否因某种原因而错误?
答案 0 :(得分:2)
实际上这是一个非常愚蠢的问题。但是,如果有人像我一样愚蠢,我将在这里提供解决方案。
在我的 queue.php 中,默认驱动程序设置为 sync ,这导致该程序仅运行作业处理方法,但没有将其排队,因为我说过我什么都没改变。因此,我只是将其设置为数据库,并且它已修复。