PikaQueue
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');
producer.queueJob({ data: "Job Data" }, function(err, message) {
assert.equal(message.data, "ataD boJ");
});
Example of a worker
:
pikaQueue('reverse-string', function(job, cb) {
var rev = job.data.split('').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.
pikaQueue(
'safety-first',
{
safe: true,
timeout: 30e3,
redis: {
port: 6379,
host: 'localhost'
}
},
function(job, cb) {
if (Math.random() < 0.5) return;
cb(null, 'this will run eventually');
}
);