SuperAPI AI 工具集

laravel-queue-patterns

编程与开发

查看项目

更新于 10-16 09:03

技能介绍

用途

Laravel Queue Patterns 是一份面向 Laravel 队列(Queue)的最佳实践参考,用于指导开发者编写结构清晰、可重试、可测试的异步任务(Job)。内容以代码示例为主,覆盖从任务定义到测试的完整流程。

主要能力

任务结构

任务类实现 ShouldQueue 接口,并使用 Dispatchable、InteractsWithQueue、Queueable、SerializesModels 等标准 trait。构造函数通过只读属性接收可序列化数据(如 Eloquent 模型),handle() 方法注入依赖(如 PaymentGateway)执行实际逻辑,failed() 方法处理失败后的清理与通知。

分发模式

支持标准分发、指定队列与连接、延迟分发、条件分发(dispatchIf / dispatchUnless),以及在数据库事务提交后分发(afterCommit)。示例明确指出在事务内直接分发任务可能导致任务在提交前执行,推荐使用 afterCommit 保证安全。

任务中间件

通过 middleware() 方法配置 RateLimited(速率限制)、WithoutOverlapping(防止重叠执行,可设置 releaseAfter 与 expireAfter)、ThrottlesExceptions(异常节流,可设置 backoff)。速率限制器在 AppServiceProvider 中通过 RateLimiter::for 定义。

链式调用

使用 Bus::chain 实现顺序执行,前一个任务成功后才运行下一个,并可通过 catch 回调处理失败。

批处理

使用 Bus::batch 实现并行独立任务,支持 then(全部成功)、catch(首个失败)、finally(无论成败)回调,以及 name、onQueue、allowFailures 配置。可通过 Bus::findBatch 查询进度。批处理中的任务必须使用 Illuminate\Bus\Batchable trait。

唯一任务

实现 ShouldBeUnique 接口,可设置 uniqueFor 时长与自定义 uniqueId,防止重复任务。

重试策略

支持固定尝试次数($tries)、时间限制重试(retryUntil)、最大异常数($maxExceptions)、指数退避($backoff 数组)、单次超时($timeout),以及通过 $this->fail() 立即标记不可恢复错误。

幂等性模式

通过检查已处理状态、使用原子更新(whereNull 条件更新并检查影响行数)防止重复处理。

队列测试

使用 Queue::fake 与 Bus::fake 断言任务已分发、链式调用、批处理;使用 dispatchSync 同步执行任务以测试处理逻辑。

使用方式

该技能以代码片段形式呈现,开发者可直接参考示例编写任务类、配置中间件与重试策略,并按照清单逐项检查。

适用场景

适用于使用 Laravel 框架开发异步任务处理的场景,包括支付处理、订单流程、CSV 导入、Webhook 处理、报表重算等。

限制

资料未提供该技能的安装命令、版本要求、收费信息或具体平台支持范围,这些内容暂未提供。