如何从Laravel Horizo​​n中的Redis队列重试所有失败的作业

时间:2019-08-20 18:45:57

标签: php laravel laravel-5 laravel-5.8 laravel-horizon

如何在Laravel Horizo​​n中重试所有所有失败的作业?似乎没有“全部重试”按钮,并且工匠命令不起作用,因为失败的作业没有存储在表中。

2 个答案:

答案 0 :(得分:1)

  

因为失败的作业没有存储在表中

实际上,您应该创建该表。来自Laravel Horizon documentation

  

您还应该创建failed_jobs表,Laravel将使用该表   存储任何失败的队列作业:

php artisan queue:failed-table

php artisan migrate

然后,转到retry failed jobs

  

重试失败的作业

     

要查看已插入到您的所有失败作业中   failed_jobs数据库表,您可以使用queue:failed Artisan   命令:

php artisan queue:failed
     

queue:failed命令将列出作业ID,连接,队列,   和故障时间。作业ID可用于重试失败的作业。对于   例如,要重试ID为5的失败作业,请发出   以下命令:

php artisan queue:retry 5

答案 1 :(得分:1)

queue:retry命令接受all代替单个作业ID:

php artisan queue:retry all

这会将所有失败的作业推回到您的Redis队列中以重试:

The failed job [44] has been pushed back onto the queue!
The failed job [43] has been pushed back onto the queue!
...

如果您没有根据安装指南创建失败的日志表,则使用以下命令:

php artisan queue:failed-table
php artisan migrate

那么您可能会小溪了。也许尝试手动与redis进行交互,并尝试直接访问失败的作业列表(假设失败的作业条目尚未擦除-根据{{1}中的配置设置,它们似乎默认保留在redis中一周) }。