kue任务队列使用
kue任务队列使用
kue三方库用于构建node的任务队列非常方便有效。注意kue是基于redis的,kue的队列将会存储于redis中,避免了主进程中的node内存的分配与阻塞。
// 安装
npm install kue --save
var kue = require('kue')
var cluster = require('cluster')
var config = require('../configs/configs')
var queues = kue.createQueue({
prefix: 'q',
redis: {
port: config.REDIS_PORT,
host: config.REDIS_HOST,
auth: config.REDIS_PASSWORD,
db: 15
}
})
function createJob() {
// 注意创建的任务名不要为'test',不然任务执行会有问题,此处有坑!
let job = queues.create("jobName", {
data: 'test'
})
.attempts(5)
.backoff(true)
.save(function(err) {
if(err) {
console.log(err)
return
}
console.log('创建任务' + job.id + '成功!')
});
setTimeout(createJob, 0);
}
if (cluster.isMaster) {
console.log("主线程 %s 工作!创建任务!", process.pid)
for (let i = 0; i < 4; i++) {
cluster.fork();
}
createJob();
cluster.on('exit', function (worker, code) {
console.log("worker线程 %s is died by %s", worker.process.pid, code);
});
} else {
queues.process('jobName', (job, done)=> {
console.log("worker线程 %s 处理 job[%d][%s]", process.pid, job.id, job.data.name);
setTimeout(done, 0);
});
}
THE END!