Node.js了解如何重新启动失败的作业

Node.js Kue how to restart failed jobs

本文关键字:失败 作业 重新启动 js 了解 Node      更新时间:2023-09-26

我在node.js应用程序中使用kue进行延迟作业。

我有一些问题,弄清楚如何使用kue的API重新启动作业,而不必使用redis命令手动将作业的id从失败作业列表移动到非活动作业列表。

是否可以使用kue?

我不想设置一个固定的重试次数-我只想重试特定的作业。

对于维护良好的替代kue的建议也很欢迎。

我不知道这是否有效,但您可以尝试将作业状态重置为活动状态,并再次保存作业:

job.on('failed', function() {
  job.state('inactive').save();

编辑:将状态设置为inactive将正确地重新队列任务

这也可以使用队列级事件来完成。

queue.on('job failed', function(id, result) {
    kue.Job.get(id, function(err, job) {
        if (!err && shouldRetry(job))
            job.state('inactive').save();
    });
});

因此,您不需要对希望重试的每个作业都执行。相反,您可以在队列级别事件中过滤它。

参见官方文档

默认情况下,作业只有一次尝试,也就是说,当它们失败时,它们被标记为失败,并一直保持这种状态,直到你介入。但是,Kue允许您指定这一点,这对作业很重要例如传输电子邮件,一旦失败,通常会重试没有问题。为此,调用.attempts()方法,并提供一个数字。

 queue.create('email', {
     title: 'welcome email for tj'
   , to: 'tj@learnboost.com'
   , template: 'welcome-email'
 }).priority('high').attempts(5).save();

reference: failure attempts