!!!!!!!!! this is sync task queue !!!!!!!!!!!!!!
npm install task-queue-node --save
var taskQueue = require('./index')
var Promise = require('bluebird')
var request = require('request')
var task = taskQueue.createTask({
interval: 200,
wait: true,
taskCommand: function (args) { // taskCommand must return promise
return new Promise(function (resolve, reject) {
console.log(new Date().getTime(), args)
setTimeout(() => {
resolve(args + ' success')
}, 300)
})
},
autoStart: false
})
// Use multiple taskQueue
var task1 = taskQueue.createTask({
interval: 200,
wait: true,
taskCommand: commandFunc,
max: 20
})
var commandFunc = function(){
return new Promise(function (resolve, reject) {
request('http://www.baidu.com',function(){
resolve(args + ' success')
})
})
}
// listen every task execute complate event
task1.subscribe((err, result) => { //result is taskCommand resolve
if (err) {
console.error(err, 'subscribe')
} else {
console.log(result)
}
})
- See the test.js file for more examples.
Params | Description |
---|---|
interval | task execute interval(ms),default:1000 . |
key | queue name,default:taskQueue . |
autoStart | when the queue is empty,use addQueue auto execute start event, default:true . |
wait | The next task will wait taskCommand resolve for execution, default:false . |
ignoreError | set the false,taskCommand reject stop all task when, default:true . |
taskCommand | task's Processing method,must is return promise ,you can use bluebird. |
firstDelay | first task is delay default:true (Not realized). |
max | queue max task number,beyond will be truncated before default:0 ,set 0 no limit. |
Event | Description |
---|---|
start | start execute task. |
stop | stop execute task. |
restart | restart task queue. |
clear | clear queue. |
addQueue | add task to queue. |
subscribe | subscribe taskCommand resolve and reject event. |
removeSubscribe | remove subscribe event. |
- 集成redis用于分布式部署
- 实现firstDelay功能