掌握 Laravel 队列:全新推出 Laravel Job Monitor
Source: Dev.to

在 Laravel 中监控后台任务一直是个小挑战。虽然 Laravel Horizon 对 Redis 支持非常出色,但许多使用数据库、SQS 或其他驱动的开发者往往感到摸不着头脑。即使使用 Horizon,要获取特定任务的详细执行历史和实时进度也并不总是那么直接。
这就是我激动地分享我的第一个 Laravel 包的原因:Laravel Job Monitor。
Laravel Job Monitor 是什么?
laravel-job-monitor 是一个轻量级包,能够自动挂钩到 Laravel 的队列系统,跟踪进入系统的每一个任务。无论是正在处理、已完成还是失败,你都能获得完整的审计记录,包括运行时间、尝试次数以及详细的错误日志。
关键特性
1. 自动“零接触”跟踪
该包不需要对现有任务代码进行任何修改。安装后,它会监听标准队列事件并立即开始记录历史。
2. 实时进度跟踪
有长时间运行的任务,例如视频导出或大规模数据导入吗?现在可以使用一个简单的 trait 将进度从 0 % 跟踪到 100 %:
use JSandaruwan\LaravelJobMonitor\Traits\TracksJobProgress;
class MassiveImportJob implements ShouldQueue
{
use TracksJobProgress;
public function handle()
{
$this->updateProgress(10); // 完成 10%
// ... 重量级处理 ...
$this->updateProgress(90); // 完成 90%
}
}
3. 内置 REST API
集成是此包的核心。它提供预构建、可配置的 API 端点,帮助你轻松构建自己的仪表盘或将任务状态集成到现有的后台管理面板中。
GET /api/job-monitor/jobs– 支持高级过滤(状态、队列、日期等)的列表GET /api/job-monitor/jobs/stats– 队列健康概览POST /api/job-monitor/jobs/{id}/retry– 一键重试失败任务
4. 零依赖
保持 vendor 目录轻量!该包不需要任何外部监控服务或大型第三方资产。它使用你现有的数据库来存储历史记录。
为什么会开发它
在许多项目中,我经常手动创建 activity_logs 或 job_statuses 表,只是为了弄清某个后台任务为何耗时过长或为何在特定用户那里失败。我希望有一种标准化的方式来在所有 Laravel 项目中处理这些问题——也希望它能帮助到你!
入门指南
通过 Composer 安装包:
composer require j-sandaruwan/laravel-job-monitor
发布配置并运行迁移:
php artisan vendor:publish --provider="JSandaruwan\LaravelJobMonitor\JobMonitorServiceProvider"
php artisan migrate
就这么简单——你的任务现在已经开始被监控。
接下来有什么计划?
- 内置、即用的 Blade 仪表盘。
- 对任务批处理进度的支持。
- 为失败任务提供自定义通知触发(Slack/Discord)。
查看 GitHub 上的源码,欢迎提交 issue 或 PR。如果你觉得它有用,给 GitHub 点个 ⭐️ 对我这个首个包的作者意义重大!
祝编码愉快! 🚀
— Janith Sandaruwan