我像往常一样设置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 how to restart failed jobs
我也尝试在Readme中添加尝试(),如下所示:
var job = jobs.create('phase2', s).attempts(5);
这些都没有奏效。该作业被标记为“失败”'并且我的控制台显示“问题”,但我没有看到“失败”中定义的消息'监听器。
修改
经过多次阅读,我已经尝试过聆听失败的工作'队列级别的事件,使用:
jobs.on('job failed', function(id,result){
console.log('fail queue');
kue.Job.get(id, function(err, job){
job.state('inactive').save();
});
});
同样的结果,没有控制台日志...它似乎是除了Kue之外的其他东西,任何想法可以使事件不被激发?
答案 0 :(得分:2)
对于延迟作业,您需要添加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();
至少那对我的问题有用。