【问题标题】:Bull queue package configuration confusion公牛队列包配置混乱
【发布时间】:2019-09-06 06:03:35
【问题描述】:

我正在使用来自 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 次,然后将其移至失败,并且能够在以后获取所有失败的作业以重试它们,我将如何配置它?

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

谢谢。

【问题讨论】:

    标签: node.js queue


    【解决方案1】:

    “停滞”的工作和“失败的”工作是有区别的。根据this note in the bull docs,工作在以下情况下被视为停滞:

    1. 运行作业处理器的 Node 进程意外终止。
    2. 您的作业处理器占用过多 CPU,导致 Node 事件循环停止,因此,Bull 无法更新作业锁。

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

    如果您正在处理失败的作业,attempts 选项会指示尝试的次数。

    至于你想要的行为:

    • 将您的 attempts 选项设置为 5
    • 稍后,收集一组失败的作业:

      const failedJobs = cacheQueue.getFailed();

    • 重试失败的作业:

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

    【讨论】:

      猜你喜欢
      • 2019-12-19
      • 2019-10-08
      • 2023-03-12
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多