| [![Build Status](https://secure.travis-ci.org/franck34/qjobs.png)](http://travis-ci.org/franck34/qjobs) |
| |
| **qjobs** |
| ================== |
| ***Efficient queue job manager module for nodejs.*** |
| |
| Features |
| -------------- |
| * Concurrency limiter |
| * Dynamic queue, a job can be added while the queue is running |
| * Optional delay before continuing after max concurrency has been reached |
| * Support of pause/unpause |
| * Events emitter based: start, end, sleep, continu, jobStart, jobEnd |
| * Quick statistic function, so you can know where the queue is, at regular interval |
| |
| For what it can be usefull ? |
| --------------------- |
| Jobs which needs to run in parallels, but in a controled maner, example: |
| * Network scanners |
| * Parallels monitoring jobs |
| * Images/Videos related jobs |
| |
| |
| Compatibility : |
| ------------------ |
| * not tested with nodejs < 0.10 |
| |
| |
| Examples |
| -------------------- |
| |
| (take a look at tests directory if you are looking for running samples) |
| |
| |
| ``` |
| var qjobs = new require('./qjobs'); |
| |
| // My non blocking main job |
| var myjob = function(args,next) { |
| setTimeout(function() { |
| console.log('Do something interesting here',args); |
| next(); |
| },1000); |
| } |
| |
| var q = new qjobs({maxConcurrency:10}); |
| |
| // Let's add 30 job to the queue |
| for (var i = 0; i<30; i++) { |
| q.add(myjob,[i,'test '+i]); |
| } |
| |
| q.on('start',function() { |
| console.log('Starting ...'); |
| }); |
| |
| q.on('end',function() { |
| console.log('... All jobs done'); |
| }); |
| |
| q.on('jobStart',function(args) { |
| console.log('jobStart',args); |
| }); |
| |
| q.on('jobEnd',function(args) { |
| |
| console.log('jobend',args); |
| |
| // If i'm jobId 10, then make a pause of 5 sec |
| |
| if (args._jobId == 10) { |
| q.pause(true); |
| setTimeout(function() { |
| q.pause(false); |
| },5000); |
| } |
| }); |
| |
| q.on('pause',function(since) { |
| console.log('in pause since '+since+' milliseconds'); |
| }); |
| |
| q.on('unpause',function() { |
| console.log('pause end, continu ..'); |
| }); |
| |
| q.run(); |
| |
| //q.abort() will empty jobs list |
| |
| ``` |
| |