222 lines
5.8 KiB
JavaScript
222 lines
5.8 KiB
JavaScript
var amqp = require('amqplib/callback_api');
|
|
|
|
var callback = function(onError, onSuccess) {
|
|
return function(err, o) {
|
|
if (err) {
|
|
onError(err)();
|
|
return;
|
|
}
|
|
onSuccess(o)();
|
|
};
|
|
};
|
|
|
|
var callbackOnlyError = function(onError, onSuccess) {
|
|
return function(err) {
|
|
if (err) {
|
|
onError(err)();
|
|
return;
|
|
}
|
|
onSuccess()();
|
|
};
|
|
};
|
|
|
|
exports._connect = function(url, onError,onSuccess) {
|
|
return function() {
|
|
amqp.connect(url, callback(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._close = function(conn, onError, onSuccess) {
|
|
return function() {
|
|
conn.close(callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._createChannel = function(conn, onError, onSuccess) {
|
|
return function() {
|
|
conn.createChannel(callback(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._closeChannel = function(channel, onError, onSuccess) {
|
|
return function() {
|
|
channel.close(callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._assertQueue = function(channel, queue, options, onError, onSuccess) {
|
|
return function() {
|
|
channel.assertQueue(queue, options, callback(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._checkQueue = function(channel, queue, onError, onSuccess) {
|
|
return function() {
|
|
channel.checkQueue(queue, callback(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._deleteQueue = function(channel, queue, options, onError, onSuccess) {
|
|
return function() {
|
|
channel.deleteQueue(queue, options, callback(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._purgeQueue = function(channel, queue, onError, onSuccess) {
|
|
return function() {
|
|
channel.purgeQueue(queue, callback(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._bindQueue = function(channel, queue, exchange, pattern, args, onError, onSuccess) {
|
|
return function() {
|
|
channel.bindQueue(queue, exchange, pattern, args, callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._unbindQueue = function(channel, queue, exchange, pattern, args, onError, onSuccess) {
|
|
return function() {
|
|
channel.unbindQueue(queue, exchange, pattern, args, callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._assertExchange = function(channel, exchange, type, options, onError, onSuccess) {
|
|
return function() {
|
|
channel.assertExchange(exchange, type, options, callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._checkExchange = function(channel, exchange, onError, onSuccess) {
|
|
return function() {
|
|
channel.checkExchange(exchange, callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._deleteExchange = function(channel, exchange, options, onError, onSuccess) {
|
|
return function() {
|
|
channel.deleteExchange(exchange, options, callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._bindExchange = function(channel, destExchange, sourceExchange, pattern, args, onError, onSuccess) {
|
|
return function() {
|
|
channel.bindExchange(destExchange, sourceExchange, pattern, args, callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._unbindExchange = function(channel, destExchange, sourceExchange, pattern, args, onError, onSuccess) {
|
|
return function() {
|
|
channel.unbindExchange(destExchange, sourceExchange, pattern, args, callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._publish = function(channel, exchange, routingKey, content, options, onSuccess) {
|
|
return function() {
|
|
if (!channel.publish(exchange, routingKey, content, options)) {
|
|
channel.once('drain', function() {
|
|
onSuccess()();
|
|
});
|
|
} else {
|
|
onSuccess()();
|
|
}
|
|
}
|
|
};
|
|
|
|
exports._sendToQueue = function(channel, queue, content, options, onSuccess) {
|
|
return function() {
|
|
if (!channel.sendToQueue(queue, content, options)) {
|
|
channel.once('drain', function() {
|
|
onSuccess()();
|
|
});
|
|
} else {
|
|
onSuccess()();
|
|
}
|
|
}
|
|
};
|
|
|
|
exports._consume = function(channel, queue, onMessage, options, onError, onSuccess) {
|
|
return function() {
|
|
channel.consume(queue, function(msg) { onMessage(msg)(); }, options, callback(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._cancel = function(channel, consumerTag, onError, onSuccess) {
|
|
return function() {
|
|
channel.cancel(consumerTag, callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
exports._get = function(channel, queue, options, onError, onSuccess) {
|
|
return function() {
|
|
channel.get(queue, options, callback(onError, function(msgOrFalse) {
|
|
return function() {
|
|
if (msgOrFalse === false) {
|
|
onSuccess(null)();
|
|
} else {
|
|
onSuccess(msgOrFalse)();
|
|
}
|
|
};
|
|
}))
|
|
};
|
|
};
|
|
|
|
exports._ack = function(channel, deliveryTag, allUpTo) {
|
|
return function() {
|
|
channel.ack({fields: {deliveryTag: deliveryTag}}, allUpTo);
|
|
};
|
|
};
|
|
|
|
exports._nack = function(channel, deliveryTag, allUpTo, requeue) {
|
|
return function() {
|
|
channel.nack({fields: {deliveryTag: deliveryTag}}, allUpTo, requeue);
|
|
};
|
|
};
|
|
|
|
exports._ackAll = function(channel) {
|
|
return function() {
|
|
channel.ackAll();
|
|
};
|
|
};
|
|
|
|
exports._nackAll = function(channel, requeue) {
|
|
return function() {
|
|
channel.nackAll(requeue);
|
|
};
|
|
};
|
|
|
|
exports._prefetch = function(channel, count) {
|
|
return function() {
|
|
channel.prefetch(count);
|
|
};
|
|
};
|
|
|
|
exports._recover = function(channel, onError, onSuccess) {
|
|
return function() {
|
|
channel.recover(callbackOnlyError(onError, onSuccess));
|
|
};
|
|
};
|
|
|
|
var eventHandler = function(event) {
|
|
return function(model, onEvent) {
|
|
return function() {
|
|
model.on(event, function(arg) {
|
|
if (arg === undefined) {
|
|
onEvent();
|
|
} else {
|
|
onEvent(arg)();
|
|
}
|
|
});
|
|
};
|
|
};
|
|
};
|
|
|
|
exports._onConnectionClose = eventHandler('close');
|
|
exports._onConnectionError = eventHandler('error');
|
|
exports._onConnectionBlocked = eventHandler('blocked');
|
|
exports._onConnectionUnblocked = eventHandler('unblocked');
|
|
|
|
exports._onChannelClose = eventHandler('close');
|
|
exports._onChannelError = eventHandler('error');
|
|
exports._onChannelReturn = eventHandler('return');
|
|
exports._onChannelDrain = eventHandler('drain');
|