Skip to content

sjlu/qued

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qued

Circle CI

A very simple queue/dequeue worker inspired by kue. In fact, it is so similar that it is essentially a drop-in replacement. It runs on Node.js applications and requires Redis for storage.

This queue has a mantra of "simplicity over functionality" where we want less complexity in code and more stability in the worker. Therefore, there is no extra queues (like completed and error) and executes one job at a time.

install

npm install qued --save

usage

To create an instance of qued:

var Qued = require('qued');
var qued = new Qued({
  REDIS_HOSTNAME: 'localhost',
  REDIS_PORT: 6379,
  REDIS_PASSWORD: null,
  TIMEOUT: 0
});
  • TIMEOUT
    • the maximum amount of time a job has to execute in milliseconds
    • set to 0 for no timeout
    • useful if your jobs are poorly written and forget to call the cb() function
    • prevents your workers from getting clogged

To create a consumer that will push jobs on the queue.

var jobs = qued.createConsumer();

jobs.create('job_name', {data:'data'}).save(function(){});

Your worker that will execute jobs from the queue, looking something like this.

qued.addProcess('job_name', function(job, done) {
  setTimeout(done, 100);
});

var worker = qued.createWorker();

extras

To prevent your worker from stopping mid execution, you can implement use the shutdown function which ensures that the last job executing finishes.

process.on('message', function(message) {
  if (message === 'shutdown') {
    worker.shutdown(function() {
      process.exit(0);
    });
  });
});

license

MIT.

About

A simple worker queue that works.

Resources

Stars

Watchers

Forks

Packages

No packages published