off-sqs-debearloper
Version:
Helper app that manages SQS and RabbitMQ transactions
76 lines (56 loc) • 2.02 kB
JavaScript
// OFF-SQS
//Helper app that manages SQS and RabbitMQ transactions
var config = require('./config'),
getMessages = require('./receiver'),
listQueues = require('./listQueues'),
parseMessage = require('./parseMessage'),
sendMessages = require('./sender'),
when = require('when');
var offSqs = function(){
this.awsConfigFile = undefined;
this.MaxNumberOfMessages = 10;
this.WaitTimeSeconds = 20;
this.listQueues = listQueues.bind(this);
this.getMessages = getMessages.bind(this);
this.config = config;
};
offSqs.prototype.configure = function(opts){
this.config.awsConfigFile = opts.awsConfigFile || this.awsConfigFile;
this.MaxNumberOfMessages = opts.MaxNumberOfMessages || 10;
this.WaitTimeSeconds = opts.WaitTimeSeconds || 20;
};
offSqs.prototype.awsReviewerFile = function(){
if(JSON.stringify(this.config.awsConfigFile) == undefined
&& config.env.development == false){
console.log("Config error, for more information: https://github.com/emilioriosvz/off-sqs-debearloper ");
throw new Error('You need to put your own AWS configuration file'); };
};
offSqs.prototype.sender = function(queueName, data){
this.awsReviewerFile();
this.listQueues(queueName).then(function(queueUrl){
sendMessages(data, queueUrl);
});
};
offSqs.prototype.receiver = function(queueName, callback){
this.awsReviewerFile();
this.callback = callback;
var deferred = when.defer(),
self = this;
this.listQueues(queueName).then(function(queueUrl){
self.queueUrl = queueUrl;
deferred.resolve({
receiver: self.getMessages.call(this)
});
});
};
offSqs.prototype.getQueueUrl = function(queueName){
var deferred = when.defer();
this.listQueues(queueName).then(function(queueUrl){
deferred.resolve(queueUrl);
});
return deferred.promise;
};
offSqs.prototype.parseMessage = function(data){
return parseMessage(data);
};
module.exports = offSqs;