round-robin

Round robin task scheduler

Round Robin

Create consumers that expire after a certain time period or task count that are schedulised to be used in a round robin fashion.

 
var RoundRobin = require("round-robin").RoundRobin
 
var scheduler = new RoundRobin({
 
  // Create a new thing to do tasks 
  spinUpfunction (cb) {
    var thing = {doTaskfunction() {}, destroyfunction() {}};
    cb(null, thing); // Remember to call the callback when ready 
  },
  
  // Tear down the thing, it won't be used again! 
  spinDownfunction(thingcb) {
    thing.destroy();
    cb(); // Remember to call the callback when done! 
  },
  
  maxUp: 10, // Allow at most 10 things to be spun up at once 
  maxTasks: 100, // Allow the thing to be used 100 times before it is spun down 
  maxAge: 1000 * 60 * 60, // Allow the thing to live for an hour before it is spun down 
  lazySpinDown: true // Spin down lazily (avoids the polling interval processing) 
});
 
// Use the scheduler to get a thing and perform a task every second 
var intervalId = setInterval(function () {
  scheduler.get(function (erthing) {
    thing.doTask();
  })
}, 1000);
 
// Finish doing tasks after 5 minutes 
setTimeout(function () {
  clearInterval(intervalId);
  
  scheduler.destroy(function (er) {
    console.log("Finished doing tasks");
  })
}, 1000 * 60 * 5);