| |
| // My non blocking main job |
| var myjob = function(args,next) { |
| |
| // do nothing now but in 1 sec |
| |
| setTimeout(function() { |
| |
| // if i'm job id 10 or 20, let's add |
| // another job dynamicaly in the queue. |
| // It can be usefull for network operation (retry on timeout) |
| |
| if (args._jobId==10||args._jobId==20) { |
| myQueueJobs.add(myjob,[999,'bla '+args._jobId]); |
| } |
| next(); |
| },Math.random(1000)*2000); |
| } |
| |
| // Notice the "new" before require, to be able to use more |
| // than one queue independently |
| var myQueueJobs = new require('../qjobs')(); |
| |
| // Let's add 30 job and add them to the queue |
| for (var i = 0; i<30; i++) { |
| myQueueJobs.add(myjob,[i,'test1']); |
| } |
| |
| // I want to know when the first job has started |
| myQueueJobs.on('start',function() { |
| console.log('starting ...'); |
| console.log(JSON.stringify(myQueueJobs.stats())); |
| }); |
| |
| // I want to know when the last job has ended |
| myQueueJobs.on('end',function() { |
| clearInterval(statId); |
| console.log('end'); |
| console.log(JSON.stringify(myQueueJobs.stats())); |
| }); |
| |
| // I want to know when each job has started |
| myQueueJobs.on('jobStart',function(args) { |
| console.log('jobStart',args); |
| }); |
| |
| // I want to know when each job has ended |
| myQueueJobs.on('jobEnd',function(args) { |
| |
| console.log('jobEnd',args); |
| |
| // If i'm jobId 10, then make a pause of 5 sec |
| |
| if (args._jobId == 10) { |
| myQueueJobs.pause(true); |
| setTimeout(function() { |
| myQueueJobs.pause(false); |
| },5000); |
| } |
| }); |
| |
| // I want to know if queue is in pause every sec |
| myQueueJobs.on('pause',function(since) { |
| console.log('in pause since '+since+' milliseconds'); |
| }); |
| |
| |
| // JOBS !! leeeeeeeeeet's staaaaaaaart ! |
| myQueueJobs.run(); |
| |
| var statId = setInterval(function() { |
| console.log(JSON.stringify(myQueueJobs.stats())); |
| },1000); |