laravel 9、10、11 队列核心机制一致,差异在于 horizon 的集成方式、配置粒度、失败处理体验及生态协同能力:laravel 9 需手动发布服务提供者,10+ 改用 horizon:install 一键初始化;10 引入标签聚合与失败筛选,11 新增动态标签、一键重试和 simple 平衡模式;所有版本均要求 redis 驱动且 horizon 依赖其连接配置。

Laravel 9、10、11 的队列核心机制本身没有颠覆性变化,底层仍基于 Redis、Database、Beanstalkd 等驱动,任务分发、序列化、重试逻辑保持高度一致。真正体现演进差异的,是 Horizon 的集成方式、配置粒度、失败处理体验以及与 Laravel 生态(如事件系统、日志、调度器)的协同能力。Horizon 并非随 Laravel 大版本强制升级,而是作为独立包持续迭代,但新 Laravel 版本会默认适配其最新稳定版,并强化配套支持。
Horizon 安装与初始化流程更轻量
从 Laravel 10 开始,php artisan horizon:install 命令替代了早期需手动 vendor:publish + 修改 config/app.php 的步骤。该命令自动完成:发布配置文件、注册服务提供者、生成基础 Supervisor 配置模板、提示设置 QUEUE_CONNECTION=redis。Laravel 11 进一步简化,若检测到已启用 Redis 驱动,安装过程会跳过冗余检查,直接进入配置引导。
- Laravel 9:需显式运行
php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider" - Laravel 10+:执行
php artisan horizon:install即可,一行命令覆盖全部初始化动作 - 所有版本均要求 Redis 连接可用,且
horizon配置中的use键必须指向有效的 Redis 连接名
失败任务管理界面与操作更直观
Horizon 的 Failed Jobs 页面在 Laravel 10 中引入了堆栈追踪折叠/展开控件,并支持按异常类名、队列名、时间范围筛选;Laravel 11 则新增“一键重试全部”按钮和失败原因关键词高亮,减少人工定位成本。后端逻辑未变——仍依赖 failed_jobs 表和 JobFailed 事件,但前端交互显著降低排查门槛。
PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
- 失败任务详情页显示完整异常消息与前 10 行堆栈(点击展开全部)
- 支持在界面上直接点击「Retry」或「Delete」,无需切换终端执行 Artisan 命令
- 重试操作会保留原始尝试次数(
attempts字段递增),符合 Laravel 重试语义
Metrics 监控维度更精细,支持自定义标签
Laravel 9 的 Horizon Metrics 主要展示吞吐量、延迟、失败率等全局指标。Laravel 10 引入「标签(Tags)」机制,允许在任务类中通过 public $tags = ['payment', 'user-123']; 打标,Metrics 页面即可按标签聚合查看性能数据。Laravel 11 扩展支持动态标签(如基于请求上下文生成),并允许在配置中为不同标签组设置独立告警阈值。
- 标签可用于过滤 Jobs 列表、Failed Jobs 列表及 Metrics 图表
- 需在
config/horizon.php的tags配置项中声明允许的标签白名单(增强安全性) - 打标的任务在 Horizon UI 中对应行会显示彩色标签徽章,便于快速识别
Supervisor 与进程管理策略更智能
Horizon 的 Supervisor 不再只是静态进程池。Laravel 10 起默认启用 auto balance 策略,根据队列积压量和 CPU 使用率动态伸缩 worker 数量;Laravel 11 新增 simple 模式,适用于单队列高频场景,避免多 supervisor 间竞争开销。同时,horizon:terminate 命令在新版本中增加平滑退出超时控制(默认 30 秒),确保正在处理的任务不被粗暴中断。
-
balance => 'auto'会每 30 秒评估一次负载,自动调整每个 supervisor 的 worker 数 - 可通过
php artisan horizon:supervisor-status查看各 supervisor 实时状态与分配队列 - Supervisor 配置支持 per-environment 覆盖,例如生产环境启用 auto,本地开发用 simple










