我创造了一份工作:
var kue = require('kue');
var queue = kue.createQueue();
//name of the queue is myQueue
var job = queue.create('myQueue', {
from: 'process1',
type: 'testMessage',
data: {
msg: 'Hello world!'
}
}).save(function(err) {
if (err) {
console.log('Unable to save ' + err);
} else {
console.log('Job ' + job.id + ' saved to the queue.');
}
});
有没有办法可以自行更新作业状态(即活动,失败,正在进行中)?例如:
消费者接受了这份工作:
queue.process('myQueue', function(job, done){
console.log('IN HERE', job.state) // returns function
});
这是从上面返回的函数:
function ( state, fn ) {
if( 0 == arguments.length ) return this._state;
var client = this.client
, fn = fn || noop;
var oldState = this._state;
var multi = client.multi();
我想要对工作状态进行硬编码,例如job.state = 'failed'
并允许自己在我想要的时候更新工作状态?
这可能在Kue吗?
答案 0 :(得分:1)
快速回答,是的,您可以使用job.failed()或发送错误回来完成。
queue.process('myQueue', function(job, done){
console.log('IN HERE', job.state) // returns function
job.failed();
done(new Error('bad'));
});
然而,听起来你想要自己处理这个过程。您可以像这样设置自己的功能。
queue.on('job enqueue', function(id, type){
console.log( 'Job %s got queued of type %s', id, type );
kue.Job.get(id, function(err, job){
if (err) return;
// do your custom processing here
if( something was processed ){
job.complete();
}else{
job.failed();
}
});
});
您还可以使用其他一些选项。
job.inactive();
job.active();
job.complete();
job.delayed();
此页面上有一些示例。 https://github.com/Automattic/kue