UNPKG

nibi

Version:

Extremely easy management of queues with RabbitMQ and/or AmazonSQS

53 lines (42 loc) 1.33 kB
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) };