用途:设计并实现生产级后台作业系统,避免长耗时任务阻塞 API 响应。适用长耗时任务(发邮件、生成报告、图像处理)、批量操作(导入导出、数据迁移)、定时任务(日报、清理、周期报告)、需重试的外部调用、基于优先级的处理和限流操作。不适用于实时双向通信(用 WebSocket)、亚秒级延迟(用内存缓存)、简单延迟(小于 5 秒可用 setTimeout)和同步 API 响应。
技术选型:Node.js 推荐 BullMQ(TypeScript 项目、已有 Redis、需限流/优先级/可重复作业);Python 用 Celery(Django、分布式执行、chains/groups/chords 复杂工作流),替代方案有 RQ、Dramatiq、Huey;云原生可用 AWS SQS、Google Cloud Tasks(无服务器、免运维、保证投递与死信队列)。
主要能力与常见反模式:配置死信队列并保留失败作业以便排查;避免同步处理导致 API 阻塞,应先入队再返回 jobId 与 queued 状态;用 jobId 与幂等记录防止重复扣款或重复邮件;用 limiter 或 rateLimiter 限制第三方 API 配额;通过 concurrency 与多进程实现 worker 水平扩展,并监控队列深度。示例模式包括邮件活动批量入队、cron 定时报告、带进度更新的视频转码流水线。
监控与上线检查:可观测 waiting、active、completed、failed、delayed 等指标,开发环境可用 Bull Board(挂载 /admin/queues)查看作业。上线前建议检查死信队列、指数退避重试、作业超时、限流、幂等键、并发调优、水平扩展、队列深度告警、失败作业检查流程、日志不含 PII、Redis 持久化(AOF/RDB)与优雅关闭(SIGTERM)。
限制:参考资料为技能说明,未提供该技能的版本、安装命令、收费、平台支持与实测效果;文中代码示例仅示意,实际用法以官方文档为准。