Как поймать не удалось Laravel 5.7 Почта «позже» исключение задания очереди - PullRequest
0 голосов
/ 04 октября 2018

Я использую: Mail::later($when, $mailable); ( документы )

И я случайно заметил в своей таблице failed_jobs некоторые записи, в которых говорилось, что некоторые почтовые сообщения в очереди не были выполнены из-за отсутствия представлений.( документы )

Но мне просто повезло, что я это заметил.

Я подумал , что произойдет, если почта в очереди потерпит неудачу, еслиБудет сгенерировано исключение, которое затем уведомит мое приложение Slack о том, как я настроил App\Exceptions\Handler и собственный регистратор в config/logging.php.

Как я могу получить App\Exceptions\Handler, чтобы правильно сообщить осбой вызова Mail::later() или Mail::queue()?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вы можете использовать таблицы невыполненных заданий, в которых будет указан список невыполненных заданий.

0 голосов
/ 04 октября 2018

Я понял это

https://laravel.com/docs/5.7/queues#failed-job-events показал мне, что я могу редактировать boot функцию 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.

Обратите внимание, однако, что laravel.log обновлялся не сразу;была задержка около минуты.

...