You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NestJS中为每个用户实现独立异步任务队列

用户需求与问题

核心功能需求

  • 为每个用户创建独立任务队列,队列按指定间隔执行一系列异步任务
  • 支持后续根据用户请求修改任务执行间隔
  • 应用场景:开发支持自定义配置的邮件发送机器人,可按用户设定的间隔向指定联系人发送指定邮件

使用Bull队列时遇到的问题

  1. 动态队列/线程创建:不清楚如何为单个用户创建独立队列,NestJS模块仅支持指定固定数量线程,用户数量不固定时,动态创建线程的方案不明
  2. 间隔逻辑不合理:配置的执行间隔未考虑任务本身的执行时间。例如设置间隔1秒但任务需执行5秒时,要么线程允许则每秒生成新任务(导致任务堆积),要么任务依次执行且完成后等待1秒再启动下一个(实际间隔变为6秒)
  3. 进程管理不便:需要便捷的方式管理这些任务进程,比如暂停任务或修改执行间隔

现有代码示例

async startProcessQueue(userId: string, accountId: string) {
    try {
      await this.processesQueue.add('startProcess', {
        userId,
        accountId
      }, {
        delay: 15000,
        jobId: accountId,
        repeat: {
          every: 10000
        },
      })
    } catch (e) {
      throw new WsException(e.message);
    }
}

其他尝试

试过BullMQ的虚拟多线程方案,但无法设置任务间隔,因为实际运行的是包含子任务的主任务,无法实现按间隔执行的需求


内容的提问来源于stack exchange,提问作者Aleksandr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 11:07:05