Laravel怎么处理队列任务失败通知_Laravel邮件或消息提醒【介绍】
贵也说了,Lara vel 队列任务失败的时候,默认是不给你发邮件的。你必须手动在任务类的 failed() 方法里写通知逻辑,没有捷径可走。为啥?因为队列这个东西,完全是独立于 HTTP 请求生命周期跑的。 简单说:队列失败时,Lara vel 不会主动通知你,你必须在 failed() 方法里亲
贵也说了,Lara vel 队列任务失败的时候,默认是不给你发邮件的。你必须手动在任务类的 failed() 方法里写通知逻辑,没有捷径可走。为啥?因为队列这个东西,完全是独立于 HTTP 请求生命周期跑的。

简单说:队列失败时,Lara vel 不会主动通知你,你必须在 failed() 方法里亲手写通知代码。
全局异常处理器(App\Exceptions\Handler)管不了队列,这是第一个坑
其实也好理解:队列进程(比如 php artisan queue:work)是独立运行的,跟 HTTP 请求生命周期完全是两套体系。就算你在 Handler::report() 里写了邮件发送,任务执行时抛出的异常也根本不会走那条路。
- 队列任务一旦失败,Lara vel 直接进自己的一套失败处理流程,跳过所有请求级别的异常通道
- 在
handle()里写try-catch也没用——如果你捕获了异常而不重新抛出,任务就会“假装成功”,甚至不会触发失败流程 - 真正可靠的入口只有一个:任务类自身的
failed(Throwable $exception)方法
在 failed() 里发告警邮件,得讲究技巧,不是扔个 Mail::send() 就完事了
这事儿要兼顾可读性、可维护性,还要防着失败兜底。需要注意以下几点:
- 先确认你已经跑过
php artisan queue:failed-table && php artisan migrate,否则连失败记录都存不住 - 千万别在
failed()里直接调用request()、session()或任何 HTTP 上下文对象——它们根本不存在 - 推荐的做法是按异常类型分路径处理。比如网络超时就发给运维,数据校验失败就发给开发:
if ($exception instanceof \GuzzleHttp\Exception\ConnectException) { Mail::to('ops@example.com')->send(new PaymentConnectionFailedMail($exception)); } - 记得加日志:
\Log::error()至少记下异常信息和堆栈跟踪,方便排查问题
重试次数和失败时机,直接决定 failed() 会不会被调用
注意了:failed() 不是每次失败都触发,只在“最终失败”那一刻才执行一次——也就是任务达到最大重试次数之后。
- 默认只重试 1 次,意味着第一次失败就直接进
failed()。生产环境一定要显式设置protected $tries = 3; - 设置
protected $backoff = [3, 6];可以避免雪崩式重试,但总耗时是各次间隔之和加上执行时间,要心里有数 - 如果你想在首次失败时就告警(比如关键支付任务),可以在
handle()中手动调用$this->fail($exception),但这样会跳过后续重试,必须慎用 retryUntil()返回一个时间点,比固定次数更灵活,适合有明确截止时间的任务
最容易忽略的是:failed() 方法本身如果再抛出异常,整个失败处理就静默淹没了——既没有邮件也没有日志。务必在方法内部做最简健壮的封装,最差也要包一层 try-catch,确保至少把异常记下来。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。
Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,













