@denimlabs/amqp-delay-fsa
Version:
36 lines (33 loc) • 1.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var calculateDelay = function calculateDelay(runAt) {
return runAt.valueOf() - +new Date();
};
var encode = function encode(doc) {
return new Buffer(JSON.stringify(doc));
};
var makePublishDelayedAmqpTask = function makePublishDelayedAmqpTask(_ref) {
var host = _ref.host,
queueName = _ref.queueName,
amqp = _ref.amqp,
amqpDelay = _ref.amqpDelay,
_ref$errorHandler = _ref.errorHandler,
errorHandler = _ref$errorHandler === undefined ? console.error : _ref$errorHandler;
return function (taskPayload) {
var runAt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();
return amqp.connect(host).then(function (conn) {
return conn.createChannel();
}).then(function (channel) {
amqpDelay(channel);
return channel;
}).then(function (channel) {
return channel.delay(calculateDelay(runAt)).publish('', queueName, encode(taskPayload));
}).then(null, errorHandler).catch(errorHandler);
};
};
exports.default = {
makePublishDelayedAmqpTask: makePublishDelayedAmqpTask
};
//# sourceMappingURL=amqp-producer-service.js.map