重试执行失败的队列任务
由 学院君 创建于2周前, 最后更新于 2周前
版本号 #1
251 views
0 likes
0 collects
失败队列任务重试
Laravel 消息队列支持对执行失败的任务进行重试(详见 Laravel 队列文档处理失败的任务部分),执行失败的任务会被存储在 failed_jobs 数据表中,你需要运行如下 Artisan 命令创建这张数据表:
php artisan queue:failed-table
php artisan migrate
其表结构如下所示:
其中包含了队列驱动、队列名称、以及序列化的任务类实例,通过这些信息可以反序列化出队列任务进行重试。
你可以运行 queue:retry 命令通过指定任务 ID 来重试对应的队列任务(ID 放置在命令最后,ID 值就是 failed_jobs 数据表对应记录的 id 字段值):
php artisan queue:retry 300
指定最大尝试次数
但是这样太被动了,也不方便运维,取而代之的,你可以在启动队列处理器进程时通过 --tries 参数指定是否对失败任务进行重试,以及最大尝试次数(含第一次运行,所以真正的重试次数等于该参数值减一):
php artisan queue:work --tries=3