laravel Horizon怎么监控和管理队列_laravel Horizon队列监控与管理

laravel Horizon可解决队列延迟与失败问题,通过安装composer require laravel/horizon并发布配置文件,设置QUEUE_CONNECTION=redis;启动php artisan horizon服务后,结合Supervisor后台运行;访问/horizon界面需配置路由中间件权限,查看Metrics、Failed Jobs等数据;在config/horizon.php中配置environments与supervisor的balance策略为auto,分配进程数并重启生效;处理失败任务需生成failed_jobs表,执行migrate后在Horizon界面重试或删除。

laravel Horizon怎么监控和管理队列_laravel Horizon队列监控与管理

如果您在使用 Laravel 开发应用时启用了队列系统,但发现任务处理延迟或失败,可能是队列进程未正常运行或负载过高。Laravel Horizon 提供了完整的队列监控与管理能力,帮助您可视化 Redis 队列状态并进行调优。

本文运行环境:macBook Pro,macOS Sonoma

一、安装与配置 Laravel Horizon

Laravel Horizon 是 Laravel 官方提供的 Redis 队列仪表板,通过它可实时查看队列性能、任务吞吐量及工作进程状态。正确安装和基础配置是启用监控的前提。

1、在项目根目录执行 Composer 命令安装 Horizon:composer require laravel/horizon

2、发布 Horizon 的配置文件和资源文件:php artisan vendor:publish –provider=”LaravelHorizonHorizonServiceProvider”

3、打开 config/horizon.php 文件,根据当前环境设置队列驱动、工作进程数量以及内存限制等参数。

4、确保 .env 文件中的 QUEUE_CONNECTION 设置为 redis,并配置好 Redis 连接信息(如 REDIS_HOST、REDIS_PASSword)。

二、启动 Horizon 服务进行队列监听

Horizon 通过独立的守护进程监听 Redis 中的任务,替代默认的 php artisan queue:work 命令,提供更稳定的队列处理机制。

1、启动 Horizon 主进程命令为:php artisan horizon,该命令会持续运行并输出日志。

2、若需后台运行,可使用 Supervisor 等进程管理工具配置常驻服务,避免终端关闭导致中断。

3、停止所有 Horizon 进程可通过命令:php artisan horizon:terminate,此操作将安全终止当前运行的所有 worker。

三、访问 Horizon Web 仪表板

Horizon 提供图形化界面展示队列运行状态,包括当前作业数、等待时间、处理速度及失败任务列表。

1、确保路由已注册,在 routes/web.php 中添加 Route::get(‘/horizon’, function () { return view(‘horizon::index’); }); 或检查是否自动加载。

2、修改 app/Providers/RouteServiceProvider.php 中的 map 方法,确保 Horizon 路由被包含。

laravel Horizon怎么监控和管理队列_laravel Horizon队列监控与管理

乾坤圈新媒体矩阵管家

新媒体账号、门店矩阵智能管理系统

laravel Horizon怎么监控和管理队列_laravel Horizon队列监控与管理17

查看详情 laravel Horizon怎么监控和管理队列_laravel Horizon队列监控与管理

3、访问 /horizon 路径前,请确认中间件设置了访问权限,可在 config/horizon.php 中设置 only_hosts 数组或 gate 授权逻辑。

4、登录后可查看“Metrics”、“Recent Jobs”、“Failed Jobs”等关键面板数据。

四、配置队列平衡策略与工作进程

Horizon 支持多种平衡模式(如 auto、simple、false),可根据任务类型动态调整并发处理能力。

1、在 config/horizon.php 的 environments 配置块中定义不同环境下的 worker 设置。

2、设置 supervisor 的 balance 选项为 auto,允许 Horizon 根据队列负载自动分配进程资源。

3、指定每个 supervisor 处理的队列名称和进程数,例如:‘supervisor-1’ => [ ‘connection’ => ‘redis’, ‘queue’ => [‘default’], ‘balance’ => ‘auto’, ‘processes’ => 10 ]

4、修改完成后重启 Horizon 服务以使新配置生效。

五、处理失败队列任务

当队列任务因异常抛出而失败时,Horizon 会将其记录到失败任务表中,便于排查与重试。

1、确保数据库已创建 failed_jobs 表,可通过运行 php artisan queue:failed-table 生成迁移。

2、执行迁移命令 php artisan migrate 创建数据表结构。

3、在 Horizon 界面的 “Failed Jobs” 标签页中查看详细错误信息,包括异常跟踪。

4、选择特定失败任务执行重试操作,也可批量删除已修复的问题条目。

以上就是laravel Horizon怎么监控和管理队列_laravel Horizon队列监控与管理的详细内容,更多请关注php中文网其它相关文章!

上一篇
下一篇
text=ZqhQzanResources