如何在队列中以编程方式重试作业



如何检查作业是否未完成?
我如何告诉作业在作业的handle函数内重试?
或者我怎样才能强迫别人认为一份工作是失败的?

我发现代码需要运行失败(或抛出异常)才能被认为是失败的作业。
我只是在需要的地方放了一个throw new Exception()
然后laravel将其视为失败的作业。

您可以在Job中实现失败的函数。

<?php
namespace AppJobs;
.......
    public function failed(Exception $exception)
    {
        Log::info('job failed');
    }
}

如何告诉job重试job的handle函数?

不确定是否适用于其他连接类型,但如果你正在使用Redis,作业可以通过命令从handle()体释放回队列:

$this->release(10);

其中10为以秒为单位的延迟时间,在此之后应该返回到队列

最新更新