首页/新闻资讯/正文详情

BullMQ Pro 暂停组(Pause Groups)完整指南:pauseGroup 与 resumeGroup 实战解析

发布时间:2026/9/25 2:39:33 来源:云帆数科 栏目:资讯中心
BullMQ Pro 暂停组(Pause Groups)完整指南:pauseGroup 与 resumeGroup 实战解析
后端消息队列任务调度【免费下载链接】bullmqBullMQ - Message Queue and Batch processing for NodeJS, Python, .NET, Elixir, Rust and PHP based on Redis or PostgreSQL项目地址https://gitcode.com/gh_mirrors/bu/bullmq点击查看免费下载本指南聚焦 BullMQ Pro 的「暂停组」Pausing Groups能力如何在单个队列中以组Group为单位全局暂停或恢复任务消费。读完本文你将掌握pauseGroup/resumeGroup的调用方式、返回值语义、与进行中任务的行为关系以及如何结合组事件与队列级暂停区分使用场景。什么是暂停组BullMQ Pro 的 Groups 功能允许在单个队列内按组group分发任务使各组内的任务按“轮询round-robin”方式被处理。而暂停组则是对这一机制进行全局控制的开关当一个组被暂停后任何 Worker 都不会再领取属于该组的任务。核心语义如下引自 docs/gitbook/bullmq-pro/groups/pausing-groups.md暂停是全局的一旦调用暂停所有连接到该队列的 Worker 都会遵守而非只对某个 Worker 生效。暂停组只会阻止新的任务被领取。当前正在处理该组任务的 Worker 会继续执行直至任务完成或失败。正在处理中的任务结束后Worker 会进入空闲状态直到该组被恢复resume才会继续领取该组的任务。暂停与恢复都通过Queue实例上的方法完成。注意本指南描述的是 BullMQ Protaskforcesh/bullmq-pro中的 Groups 能力属于付费/Pro 版本特性开源版 BullMQ 的Queue不具备pauseGroup/resumeGroup方法。pauseGroup暂停一个组暂停一个组调用Queue实例的pauseGroup(groupId)方法await myQueue.pauseGroup(groupId);方法签名Pro 版本QueuePropauseGroup(groupId: string): Promiseboolean行为要点即使groupId当时不存在也会被加入暂停列表。原因在于组可能是“瞬态的”ephemeral组可以随任务的到来动态出现因此预先将不存在的组加入暂停列表可以确保未来新增到该组的任务一出现即被阻止领取。pauseGroup返回boolean。若该组已经处于暂停状态则返回false表示本次调用未产生实际变更若首次成功暂停则返回true。一个完整的示例import { QueuePro } from taskforcesh/bullmq-pro; const myQueue new QueuePro(video-transcoding); const result await myQueue.pauseGroup(user-42); if (result true) { console.log(Group user-42 paused successfully); } else { console.log(Group user-42 was already paused); }resumeGroup恢复一个组恢复一个组调用Queue实例的resumeGroup(groupId)方法await myQueue.resumeGroup(groupId);行为要点resumeGroup返回boolean。在以下两种情况下返回false该组不存在从未被暂停过也从未出现在暂停列表中该组已经处于恢复未暂停状态。只有当该组确实处于暂停状态并被成功恢复时才返回true。一个完整的示例import { QueuePro } from taskforcesh/bullmq-pro; const myQueue new QueuePro(video-transcoding); const result await myQueue.resumeGroup(user-42); if (result true) { console.log(Group user-42 resumed, workers can pick jobs again); } else { console.log(Group user-42 is not paused (either missing or already resumed)); }暂停组与任务处理状态的关系理解暂停组的运行时行为关键是区分「正在处理的任务」与「等待领取的任务」状态暂停后的行为该组等待中的任务waiting / delayed / prioritized 等不会被任何 Worker 领取保留在队列中等待恢复该组正在处理中的任务activeWorker 继续执行直到任务完成或失败已完成/失败的任务正常进入完成或失败流程不受暂停影响Worker 空闲在组被恢复前不再领取该组任务可继续处理其他组的任务见下文需要特别指出的是暂停是“组级”的。如果一个 Worker 绑定的队列中包含多个组暂停其中某一个组Worker 仍然可以继续处理其他未被暂停的组以及无组non-group任务。这与队列级暂停queue.pause()见 docs/gitbook/bull/quick-guide.md不同——后者会停止整个队列的任务分发。暂停组与队列级暂停的对比BullMQ 本身提供了队列级的pause()/resume()见 docs/gitbook/bull/quick-guide.md而 BullMQ Pro 在此基础上提供了更细粒度的组级暂停维度队列级暂停queue.pause()组级暂停pauseGroup()影响范围整个队列的所有任务仅指定的组适用场景运维窗口、整体停机维护针对特定业务实体如某个用户暂停处理与进行中任务的关系同样不打断进行中的任务同样不打断进行中的任务恢复方式queue.resume()resumeGroup(groupId)使用建议与注意事项幂等性设计由于pauseGroup/resumeGroup在“无变更”时返回false在实际业务中建议根据返回值判断是否需要后续处理如记录日志、触发补偿逻辑避免重复执行相同操作。暂停列表持久性暂停的组会被记录在暂停列表中即使组不存在也会记录这意味着一个组被暂停后即便当前没有任何任务未来新加入该组的任务也会被阻止领取。在设计任务清理或组回收逻辑时需要考虑这一点。不要用暂停组替代限流如果你需要的是控制某组的处理速率或并发应使用 groups/rate-limiting.md 与 groups/local-group-rate-limit.md 中描述的组级限流能力而不是暂停组。暂停组是“完全停止”限流是“限制速度”。结合组并发使用暂停组与 groups/local-group-concurrency.md 描述的本组并发控制可以叠加使用——暂停组完全阻止领取组并发则限制同组并行执行的任务数。与批处理batches的配合如果队列启用了批处理并设置了groupAffinity见 docs/gitbook/bullmq-pro/batches.md暂停一个组后该组的任务也不会进入新的批处理直到恢复。相关 API 与延伸阅读Pause Group API ReferenceResume Group API Reference组功能总览docs/gitbook/bullmq-pro/groups/README.md组级限流docs/gitbook/bullmq-pro/groups/rate-limiting.md组级并发docs/gitbook/bullmq-pro/groups/local-group-concurrency.md队列级暂停/恢复开源版docs/gitbook/bull/quick-guide.md本文内容基于当前仓库中 docs/gitbook/bullmq-pro/groups/pausing-groups.md 及仓库内相关文档整理API 方法签名以 BullMQ Pro 官方文档为准。赞分享后端消息队列任务调度【免费下载链接】bullmqBullMQ - Message Queue and Batch processing for NodeJS, Python, .NET, Elixir, Rust and PHP based on Redis or PostgreSQL项目地址https://gitcode.com/gh_mirrors/bu/bullmq点击查看免费下载相关推荐BullMQ Pro Groups 数据读取指南分组 Job 计数与分页查询的完整实战BullMQ Pro Groups 数据读取指南分组 Job 计数与分页查询的完整实战 分组Groups是 BullMQ Pro 的核心能力之一它允许你后端消息队列任务调度Nuclei 模糊测试实战4步从第一份模板到性能调优的完整指南Nuclei 模糊测试实战4步从第一份模板到性能调优的完整指南 Nuclei 是一款基于 YAML 模板的开源漏洞扫描器它内置的 fuzzing模糊测试后端消息队列任务调度终极文字转手写工具3分钟让电子文档拥有真实笔迹的完整指南终极文字转手写工具3分钟让电子文档拥有真实笔迹的完整指南 还在为手写作业而烦恼想让你的数字内容拥有温暖的手写质感吗文字转手写工具正是你需要的完美解决方案后端消息队列任务调度上一篇Magic-Doc 使用教程下一篇Arrow与Bow集成游戏叙事SDK的完整开发教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

BAML C 桥接运行时 RID 策略与平台诊断探针:8 个精确 RID、禁止架构替换与 BAML0010 构建校验
BAML C 桥接运行时 RID 策略与平台诊断探针:8 个精确 RID、禁止架构替换与 BAML0010 构建校验

编程语言AI Agent编译器CLI人工智能 【免费下载链接】baml The programming language for agents 项目地址: https://gitcode.com/gh_mirrors/ba/baml 点击查看 免费下载 导读 本文围绕 Baml.Bridge.RidDiagnosticProbe 这一仓库内固定测试夹具,完整讲… · 2026/9/25 2:39:26

Apache Cassandra SSTable 格式 API 全解析:从组件模型到自定义格式实现
Apache Cassandra SSTable 格式 API 全解析:从组件模型到自定义格式实现

数据库分布式数据库后端 【免费下载链接】cassandra Mirror of Apache Cassandra 项目地址: https://gitcode.com/gh_mirrors/cassandr/cassandra 点击查看 免费下载 本文以仓库内 SSTable_API.md 为骨架,结合 SSTableFormat、BigFormat、BtiFormat、Da… · 2026/9/25 2:39:26

Design Compiler:中断命令/脚本的执行
Design Compiler:中断命令/脚本的执行

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 目录 中断命令的执行 中断脚本的执行 中断综合命令的执行 映射阶段 优化阶段 中断命令的执行 如果在使用命令时输入了错误的选项或输入了错误的命令&#xff… · 2026/9/25 2:39:26

react-native-skia 图像偏移过滤器 Offset 完全指南:属性、示例与底层实现
react-native-skia 图像偏移过滤器 Offset 完全指南:属性、示例与底层实现

图形学移动开发跨平台UI组件 【免费下载链接】react-native-skia High-performance React Native Graphics using Skia 项目地址: https://gitcode.com/gh_mirrors/re/react-native-skia 点击查看 免费下载 本文围绕 react-native-skia 提供的 Offset 图像过滤器展… · 2026/9/25 3:05:43

新春送福进一线:一场基层工会活动的策划与复盘
新春送福进一线:一场基层工会活动的策划与复盘

腊月下旬的北京,天亮得晚。活动室门口有人摸黑支桌子,红纸一卷一卷堆在墙角,砚台里的墨还没化开,凑近能闻到那股子墨香。常营地区总工会今年的"新春送福进一线"活动,就这么从一张桌子开始铺开了。说实话&… · 2026/9/25 3:05:43

easy-vibe 前端进阶教程:Figma 与 MasterGo 实战入门,从零创建网页原型
easy-vibe 前端进阶教程:Figma 与 MasterGo 实战入门,从零创建网页原型

教程文档 【免费下载链接】easy-vibe 从 0 到 1 学会 vibe coding,项目制学习 项目地址: https://gitcode.com/datawhalechina/easy-vibe 点击查看 免费下载 本文基于 easy-vibe 教程 Stage 2(初级-中级开发)前端方向的《Figma 与… · 2026/9/25 3:05:37

F´ 中的规则与场景驱动测试:基于 STest 的组件单元测试框架详解
F´ 中的规则与场景驱动测试:基于 STest 的组件单元测试框架详解

嵌入式系统编程 【免费下载链接】fprime F - A flight software and embedded systems framework 项目地址: https://gitcode.com/gh_mirrors/fpri/fprime 点击查看 免费下载 导读 STest 是 F(F Prime)飞行软件与嵌入式系统框架中内置的一个… · 2026/9/25 3:05:37

AI芯片架构选型指南:从GPU到TPU的实战对比
AI芯片架构选型指南:从GPU到TPU的实战对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 3:05:37

Win10 LTSC 2019老电脑优化指南:稳定、轻量、十年支持
Win10 LTSC 2019老电脑优化指南:稳定、轻量、十年支持

1. 为什么老电脑需要LTSC?不是“精简版”,而是“去冗余的官方原生系统”你手边那台奔腾G3258配4GB内存、机械硬盘还在吱呀作响的办公机,或者那台被塞进收银台底下、连USB3.0都没有的POS终端——它们真就该被淘汰吗?我去年帮本地一… · 2026/9/25 3:05:37

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码