nibi
Version:
Extremely easy management of queues with RabbitMQ and/or AmazonSQS
53 lines (42 loc) • 1.33 kB
JavaScript
var amqp = require('amqplib')
var AWS = require('aws-sdk')
var when = require('when')
var utils = require('./utils')
var config = require('./config')
var sendWithRabbitMQ = function (sendingData, url, callback) {
var route = utils.buildRoute(config)
amqp.connect(route).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));
channel.close();
callback(null);
});
})).ensure(function() {
conn.close();
});
}).then(null, function (err) {
callback(err);
});
};
var sendWithSqs = function (sendingData, url, callback){
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){
});
};
module.exports = sendMessages = function (sendingData, url, callback) {
return (config.service === 'rabbit')
? sendWithRabbitMQ(sendingData, url, callback)
: sendWithSqs(sendingData, url, callback)
};