全部
常见问题
产品动态
精选推荐
功能建议

分析中 已回复 待规划 {{opt.name}}
分析中 已回复 待规划
Laravel如何监控和管理失败的队列任务

管理 管理 编辑 删除

Laravel 如何监控和管理失败的队列任务(Failing Jobs)

Laravel 对失败任务有 内置支持,并且可以扩展做监控、告警与后台管理。

1. 开启失败队列任务记录

Laravel 通过 failed_jobs 表记录失败任务。

步骤 ①:生成失败任务记录表

php artisan queue:failed-table
php artisan migrate

生成的表会记录:

  • connection
  • queue
  • payload(任务内容)
  • exception(错误堆栈)
  • failed_at(失败时间)

2. 使任务自动进入失败队列

Laravel 在任务执行 达到最大重试次数抛出异常 时,会将其写入 failed_jobs。

你可以在 Job 中定义最大尝试次数:

public $tries = 3;

或者设置最大执行时间:

public $timeout = 120;


3. 使用 failed() 方法处理任务失败回调

在 Job 类中添加 failed() 方法:

public function failed(\Throwable $exception)
{
    // 失败后的自定义操作
    Log::error('队列任务失败:', [
        'job' => static::class,
        'error' => $exception->getMessage()
    ]);

    // 也可以触发通知、钉钉告警、邮件告警等
}

失败后 Laravel 会自动调用它。


4. 查看失败任务

命令方式(开发阶段常用)

查看所有失败任务:

php artisan queue:failed

查看某个任务详情:

php artisan queue:failed {id}


5. 重试失败任务

重试单个任务:

php artisan queue:retry {id}


重试所有任务:

php artisan queue:retry all


6. 删除失败任务

删除所有失败任务:

php artisan queue:flush

删除单个:

php artisan queue:forget {id}


7. 队列实时监控方式(推荐)

Laravel 内置 horizon,可以做监控大屏。


📌 方案 A:使用 Laravel Horizon(Redis 队列推荐)

如果你使用 redis 队列,强烈推荐 Horizon:

composer require laravel/horizon
php artisan horizon:install
php artisan migrate

启动:

php artisan horizon

访问:

/horizon

Horizon 提供:

✔ 队列任务吞吐性能

✔ 失败任务统计

✔ 每分钟的失败率

✔ Worker 状态

✔ 自动重启

✔ 可配置预警(Slack/钉钉/Webhook)

这是 Laravel 官方唯一的企业级监控面板。


📌 方案 B:自定义管理后台(用于 PC 管理后台)

一般管理后台需要展示以下内容:

后台常见列表项

  • 任务 ID
  • 任务类型
  • 所属队列
  • 数据(payload)
  • 错误堆栈(缩略展示)
  • 创建时间 / 失败时间
  • 操作:重试、删除、查看详情

获取失败任务数据

你可以直接访问数据库:

$jobs = DB::table('failed_jobs')->orderBy('failed_at', 'desc')->paginate(20);

重试任务:

Artisan::call("queue:retry", [
    'id' => $id
]);

删除失败任务:

Artisan::call("queue:forget", [
    'id' => $id
]);


{{voteData.voteSum}} 人已参与
支持
反对
请登录后查看

小码二开 最后编辑于2025-12-02 14:53:23

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}} 【已收集】
{{item.floor}}# 沙发 板凳 地板 {{item.floor}}# 【已收集】
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
分享
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
收起 展开更多
查看更多
打赏
已打赏¥{{reward_price}}
115
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服