Laravel 5.6
我有一个使用数据库队列驱动程序运行的作业 . Job通过Facade调用自定义类的方法 .
在自定义类方法中,有很多情况下可以抛出异常 . 我发生了所有这些异常,并使用 Log::
触发消息松弛, report($e)
使用Laravel的异常处理程序报告错误 .
问题:
如果我直接在类上运行该方法,则会处理错误并正确完成方法 .
如果我通过Job调用该方法,则第一个Exception会导致Job失败 . 这些是直接调用方法时处理完全相同的异常 .
我错过了什么?
1 回答
这是Laravel关于此的官方文档:
“错误处理如果在处理作业时抛出异常,作业将自动释放回队列,以便再次尝试 . 作业将继续释放,直到尝试允许的最大次数为止最大尝试次数由队列中使用的--tries开关定义:work Artisan命令 . 或者,可以在作业类本身上定义最大尝试次数 . 有关运行队列工作程序的更多信息可以通过您的应用程序来定义 . 在下面找到 . “
您可以使用Laravel Failed Job Events . https://laravel.com/docs/5.6/queues#failed-job-events