如何捕获失败的Laravel 5.7邮件“稍后”队列作业异常

时间:2018-10-04 20:00:02

标签: laravel laravel-5 queue jobs

我正在使用:Mail::later($when, $mailable);docs

我偶然发现在我的failed_jobs表中,有些条目说某些排队的邮件由于缺少视图而失败。 (docs

但是幸运的是我注意到了它。

思考如果排队的邮件失败了,将会发生异常,它将引发异常,然后由于我如何设置App\Exceptions\Handler和自定义记录器,它将通知我的Slack应用程序在config/logging.php中。

如何获取App\Exceptions\Handler来正确报告Mail::later()Mail::queue()的呼叫失败?

2 个答案:

答案 0 :(得分:2)

我想通了

https://laravel.com/docs/5.7/queues#failed-job-events向我展示了我可以编辑boot的{​​{1}}函数以使其具有:

App\Providers\AppServiceProvider

要测试该方法是否在本地有效,我在本地Queue::failing(function (JobFailed $event) { Log::error('JobFailed. ' . json_encode(['connectionName' => $event->connectionName, 'job' => $event->job, 'exception' => $event->exception])); }); 中设置了QUEUE_DRIVER=sync,然后运行了.env

它成功记录了php artisan queue:work --tries=1 --daemon > storage/logs/laravel.log的异常。

但是请注意,Mail::later并没有立即更新。大约延迟了一分钟。

答案 1 :(得分:-1)

您可以使用失败的工作表,其中将列出失败的工作。