公牛队列程序包配置混乱

时间:2019-04-16 07:42:52

标签: node.js queue

我正在使用npm中的bull包来管理“ npm i bull”队列。我大部分都知道它可以正常工作,但是在配置中似乎有些我不理解的东西。

在新队列的配置中,有一个:

 maxStalledCount: number = 1; // Max amount of times a stalled job will be re-processed.

这来自他们github的参考页 然后可以定义另一个配置:

attempts: number; // The total number of attempts to try the job until it completes.

我应该提到,这与失败的工作有关

首先,似乎只有尝试才能真正决定任何事情,而不管maxStalledCount中的内容是什么,脚本将仅遵循设置的尝试次数。 例如:如果我将尝试次数设置为3并将maxStalledCount设置为1,它将“仍然尝试3次”,然后在“尝试次数用完”时将其移至失败 不同的示例:如果我将尝试次数设置为1并将maxStalledCount设置为3,则在将其投入失败之前只会进行1次尝试。

有人可以解释区别吗?我在网上找不到任何东西。

我最终希望队列执行的操作是尝试尝试最多5次,然后将其移至失败,并能够在以后获得所有失败的作业以重试它们,我该如何配置呢? / p>

添加了指向参考页面的链接:https://github.com/OptimalBits/bull/blob/develop/REFERENCE.md

谢谢。

1 个答案:

答案 0 :(得分:0)

“停滞”工作与“失败”工作之间有区别。根据{{​​3}},在以下情况下,作业被视为已停顿:

  1. 运行作业处理器的Node进程意外终止。
  2. 您的作业处理器过于占用CPU,导致Node事件循环陷入僵局,结果,Bull无法续签作业锁定。

maxStalledCount 是一种安全措施,因此有问题的作业不会无限期地重新启动。

如果要处理失败的作业,则尝试选项指定尝试次数。

关于您的期望行为:

  • 将您的尝试选项设置为5
  • 稍后,使用以下命令收集一系列失败的作业:

    const failedJobs = cacheQueue.getFailed();

  • 使用以下方法重试失败的作业:

    failedJobs.forEach(job => job.retry());