off-sqs-debearloper
Version:
Helper app that manages SQS and RabbitMQ transactions
111 lines (93 loc) • 2.51 kB
JavaScript
var AWS = require('aws-sdk'),
config = require('./config'),
sqs = {},
when = require('when');
module.exports = listQueues = function (queueName){
var deferred = when.defer();
if(config.env.production || config.env.qa){
AWS.config.update(config.awsConfigFile);
sqs = new AWS.SQS();
return listSQSQueues(queueName);
};
return listRabbitQueues(queueName);
};
var listSQSQueues = function(queueName){
var deferred = when.defer();
sqs.listQueues(function(err, res){
var queueFinder = false;
if(res.QueueUrls){
for(var i in res.QueueUrls){
if(res.QueueUrls[i].split('/').pop() === queueName){
queueFinder = true; };
};
};
if(queueFinder){
getQueue(queueName).then(function(queueUrl){
deferred.resolve(queueUrl);
});
}else{
createQueue(queueName).then(function(){
getQueue(queueName).then(function(queueUrl){
deferred.resolve(queueUrl);
});
});
};
});
return deferred.promise;
}
var listRabbitQueues = function(queueName){
var deferred = when.defer();
deferred.resolve(queueName);
return deferred.promise;
}
function listQueues(_queueName){
var deferred = when.defer();
sqs.listQueues(function(err, res){
var queueFinder = false;
if(res.QueueUrls)
for(var i in res.QueueUrls)
if(res.QueueUrls[i].split('/').pop() === _queueName)
queueFinder = true;
if(queueFinder){
getQueue(_queueName).then(function(queueUrl){
deferred.resolve(queueUrl);
});
} else {
createQueue(_queueName).then(function(){
getQueue(_queueName).then(function(queueUrl){
deferred.resolve(queueUrl);
})
});
};
});
return deferred.promise;
};
function getQueue(_queueName){
var deferred = when.defer();
sqs.getQueueUrl({QueueName: _queueName}, function(err, data){
if(err){
console.log("/63, " + err);
} else{
console.log("By using the SQS queue: " + data.QueueUrl);
deferred.resolve(data.QueueUrl);
}
});
return deferred.promise;
};
function createQueue(_queueName){
var deferred = when.defer();
var cqParams = {
QueueName: _queueName,
Attributes: {}
};
console.log(typeof sqs);
sqs.createQueue(cqParams, function(err, res){
if(err){
console.log("/67, " + err);
// stop recursivity
} else {
deferred.resolve();
}
});
return deferred.promise;
};