node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



PikaQueue provides a simple abstraction to managing job queues in redis.

There are two players involved in a job queue: a producer and a worker.

A producer is an entity that submits a job to a queue to be completed. The producer may or may not be interested in being notified of the completion and status of job submitted.

A worker in an entity that monitors a job queue, processes the job, and then sends a notification to any interested parties once the completed.

Example of a producer:

var producer = pikaQueue('reverse-string');
// Pass in a callback if you wish to receive notification when the job is complete. 
producer.queueJob({ data: "Job Data" }, function(err, message) {
  // this callback is optional 
  assert.equal(, "ataD boJ");

Example of a worker:

// add a callback to make it a worker 
pikaQueue('reverse-string', function(job, cb) {
  var rev ='').reverse().join('');
  cb(null, { data: rev });

Safe Queues

PikaQueue allows for safe queues, which ensure work will be picked back up if a job never finishes.

    safe: true, // jobs will be retried if they fail 
    timeout: 30e3, // this is the max amount of time a job should take in milliseconds 
    redis: { // you can also pass in a redis host 
      port: 6379,
      host: 'localhost'
  function(job, cb) {
    if (Math.random() < 0.5) return;
    cb(null, 'this will run eventually');