off-sqs-debearloper
Version:
Helper app that manages SQS and RabbitMQ transactions
49 lines (42 loc) • 1.3 kB
JavaScript
var amqp = require('amqplib'),
AWS = require('aws-sdk'),
config = require('./config'),
when = require('when');
module.exports = sendMessages = function (sendingData, url){
if(config.env.production || config.env.qa){
return sendWithSqs(sendingData, url); };
return sendWithRabbitMQ(sendingData, url);
};
var sendWithRabbitMQ = function (sendingData, url){
amqp.connect('amqp://localhost').then(function(conn){
return when(conn.createChannel().then(function(channel){
var queue = url;
var ok = channel.assertQueue(queue, {durable: false});
return ok.then(function(_qok){
var dataToSend = JSON.stringify(sendingData);
channel.sendToQueue(queue, new Buffer(dataToSend));
return channel.close();
});
})).ensure(function() {
conn.close();
});
}).then(null, console.warn);
};
var sendWithSqs = function (sendingData, url){
if(typeof sendingData != 'string'){
sendingData = JSON.stringify(sendingData);
};
var params = {
MessageBody: sendingData,
QueueUrl: url
};
AWS.config.update(config.awsConfigFile);
var sqs = new AWS.SQS();
sqs.sendMessage(params, function(err, data){
if(err){
console.log("" + err);
} else {
console.log("Success send");
};
});
};