【问题标题】:NestJS Bull queues - Missing lock for job failedNestJS Bull 队列 - 缺少作业锁定失败
【发布时间】:2022-08-06 23:52:55
【问题描述】:

我正在使用 Bull 和 NestJS 来处理作业队列。在流程处理程序中,我想将作业标记为失败而不是已完成,但似乎 - 还阅读了文档 - Job#moveToFailed() 方法只允许在等待的作业中使用。

实际上,它会触发错误提示“作业 ${jobId} 的锁丢失失败”。 但是,使用 ignoreLock 参数调用 Job#moveToFailed 为 true 一切正常。

如果我忽略将作业移动到失败的锁会发生什么?有什么副作用吗?在我的场景中,队列作业将始终由相同的@Processor 使用。

这是我为测试目的而运行的一段代码:

@Process()
async transcode(job: Job<unknown>): Promise<any> {
  const jobData = job.data as Record<string, string | unknown>
  if (jobData == null) {
    await job.moveToFailed({ message: \'Hook marked as failed because of missing data\' })
    return
  }

  // do other stuff for job execution..
}
  • 设置ignoreLockDOC
  • 当我写@EmptyBrain 时,是否有一些副作用告诉公牛忽略锁?

标签: typescript redis queue nestjs bull


【解决方案1】:

我遇到了同样的问题,对我有用的是将“0”作为令牌参数传递(忽略令牌检查)。

await job.moveToFailed({ message: 'Hook marked as failed because of missing data' }, '0')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2014-11-19
    • 1970-01-01
    • 2020-10-05
    • 2016-07-19
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多