Agent Skills
返回列表
🔒

BullMQ 分布式任务队列

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/bullmq-redis-message-queue-job-processor-nodejs

技能介绍

解决什么问题

在 Node.js 服务中,当请求需要异步处理时,开发者通常会面临几个痛点:HTTP 请求不能长时间挂起,数据库事务不能无限等待,而简单的内存队列又无法应对服务重启或多实例并发。我们需要一个机制,将耗时任务(如发送邮件、生成报表、处理视频)从主请求链路中剥离,放入一个可靠、可扩展的队列中。

BullMQ 就是为解决这个问题而生的。它基于 Redis 提供高性能的分布式队列,允许我们将任务定义、调度与执行分离,保证任务在服务重启后依然不丢失,并支持多 worker 进程并行消费。

它是如何工作的

BullMQ 的核心围绕三个概念:Queue(任务队列)、Worker(消费者)和 Job(具体任务)。

  • 定义任务与队列:使用 Queue 实例创建一个任务队列,并向其中添加 Job。每个 Job 可以携带任意 JSON 数据。
  • 配置 Workers 处理任务:Worker 负责监听队列并执行任务处理逻辑。你可以在单独的进程或机器上启动多个 Worker,BullMQ 会自动进行负载均衡。
  • 利用高级调度特性:

- 优先级队列:为关键任务设置更高优先级,确保它们被优先处理。
- 速率限制:控制单位时间内处理的任务数量,避免下游服务(如第三方 API)过载。
- 延迟任务:定时执行任务,例如 5 分钟后的提醒。
- 父子依赖:将复杂任务拆分为多个子任务,只有当所有子任务完成后,父任务才会开始执行。
- 可重复任务:定义一次性任务或按 Cron 表达式周期性执行的任务。
- 沙盒化工作进程:为任务处理提供隔离环境,防止单个任务的异常影响整个应用。

适用边界与注意点

BullMQ 是一个强大的工具,但并非万能。它最适合需要高吞吐量、可靠后台处理的场景。如果你的应用任务量很小,或者不需要跨实例协调,内置的简单队列可能就足够了。

此外,BullMQ 依赖 Redis,因此需要单独部署和维护 Redis 实例。在设计任务处理逻辑时,务必考虑到任务失败后的重试机制和错误处理,因为网络抖动或下游服务故障是常态。

对于非 Node.js 环境,BullMQ 提供了 BullMQ Proxy 作为兼容方案,但核心优势仍体现在 Node.js 生态中。

使用场景

  • 电商促销期间,处理高并发订单时,用优先级队列确保VIP用户的支付任务优先执行
  • 内容审核平台,需要对违规内容进行延迟审核,设置5分钟后自动触发审核任务
  • 报表生成系统,将复杂报表拆分为多个子任务,通过父子依赖确保所有子任务完成后生成最终报表

适合人员

  • Node.js后端开发工程师,负责构建高并发后台任务处理系统,需要可靠的分布式队列支撑
  • 电商平台运维人员,处理促销活动中的订单任务,需要优先级调度和速率限制防止系统过载
  • 数据处理团队工程师,处理批量数据同步任务,需要延迟任务和父子依赖管理复杂流程