kued
Version:
Extensions for the Kue library (Daemonization, Checkpointing, etc.)
44 lines (35 loc) • 1.19 kB
JavaScript
'use strict';
class KueOutput {
constructor(config, logger, queue){
config.options = config.options || {};
config.options.kue = config.options.kue || {};
this.priority = config.options.kue.priority || 0;
this.attempts = config.options.kue.attempts || 1;
this.backoff = config.options.kue.backoff || true;
this.ttl = config.options.kue.ttl || null;
this.delay = config.options.kue.delay || null;
this.topicName = config.output.slice(config.output.indexOf(':') + 1);
this.logger = logger;
this.queue = queue;
}
static get dependencies(){
return [
{ provider: 'logger' },
{ provider: 'kue' }
];
}
dispatch(message, done){
const job = this.queue.create(this.topicName, message).priority(this.priority).attempts(this.attempts);
if(this.ttl) job.ttl(this.ttl);
if(this.delay) job.delay(this.delay);
job.save((err) => {
if (err){
this.logger.log(['error'], { message: 'Failed to forward message.', error: err });
return done(err);
}
this.logger.log(['debug'], { message: 'Forwarded message successfully.' });
return done();
});
}
}
module.exports = KueOutput;