Node.js Kue如何重启失败的作业

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

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

这可能使用kue吗?

我不想设置固定次数的重试尝试 – 我只是想重试特定的作业。

一个保持良好的替代kue的build议也是受欢迎的。

我不知道这是否工作,但你可以尝试重置工作的状态来激活,并再次保存工作:

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

编辑:将状态设置为不活动将正确地重新排列任务。

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

 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(); 

参考: 失败的尝试