作业不重新启动

我像往常一样设置一个kue工作:

var job = jobs.create('phase2', s); job.on('complete', function (){ console.log('Job'+job.id+' is done'); }).on('failed', function (){ console.log('Job'+job.id+'has failed'); }); job.save(); 

在某些情况下,我希望作业失败并自动重启。 为此,我在我的处理器中有以下几行:

 if(t==1){ //Keep going }else{ console.log('PROBLEM'); job.failed(); } 

我曾尝试将失败的事件更改为:

 .on('failed', function (){ console.log('Job'+job.id+'has failed'); job.state('inactive').save(); }); 

如下所示: Node.js Kue如何重新启动失败的作业

我也尝试在自述文件中添加attempt(),如下所示:

 var job = jobs.create('phase2', s).attempts(5); 

这些东西都没有奏效。 作业被标记为“失败”,我的控制台显示“PROBLEM”,但是我看不到“失败”侦听器中定义的消息。

编辑

经过更多的阅读,我试着听取队列级别的'失败'事件,使用:

  jobs.on('job failed', function(id,result){ console.log('fail queue'); kue.Job.get(id, function(err, job){ job.state('inactive').save(); }); }); 

同样的结果,没有控制台日志…这似乎是比其他东西,任何想法什么可以使事件不火?

对于延迟作业,您需要添加jobs.promote()以添加将延迟作业放回队列的setInterval()。 也在README上 。 所以你需要这样的东西:

 jobs.on('job failed', function(id, result){ console.log('fail queue'); kue.Job.get(id, function(err, job){ job.state('inactive').save(); }); }); jobs.promote(); 

至less这对我的问题有效。