防止 API 故障导致队列崩溃 — Fuse for Laravel
发布日期 经过 哈里斯·拉夫托普洛斯
▶️ 观看视频教程 (19分钟)
周五晚上 11 点,Stripe 宕机了。你的队列处理程序对此毫不知情——它们继续发送支付任务,每个任务都卡住直到超时,然后重试,再次卡住。与此同时,队列中的其他所有任务,例如电子邮件、通知、Webhook 等,都被大量失败的请求所阻挡。等你醒来时,整个系统已经瘫痪了好几个小时。
这种事,只有亲身经历才会明白。
在这段视频中,我使用 Horizon 和 Redis 构建了一个真实的 Laravel 应用,发送了数千个支付任务和确认邮件,然后关闭了一个模拟的 Stripe 端点,以展示具体会发生什么。剧透一下:情况很糟糕。任务堆积如山,重试机制让情况雪上加霜,最终队列完全无法使用。
然后我用 Laravel 的 Fuse 包解决了这个问题——这个熔断器包是我在 2026 年 Laracon India 大会上开发并展示的。它的原理很简单:几次超时后,熔断器就会打开,任务不再访问失效的 API。它们会被延迟而不是失败,因此不会丢失任何数据。其他任务可以继续正常运行,因为 worker 不会被浪费在永远不会成功的请求上。而当 Stripe 恢复正常时呢?Fuse 会自动检测到并恢复处理。
一个中间件,三个属性,你的队列就能自动修复。无需人工干预,无需凌晨两点查看页面,也不会丢失任何任务。
我还讲解了如何构建实时状态页面,以便您可以实时查看电路状态、成功率和恢复情况。
▶️ 观看完整视频 →





