UNPKG

@denimlabs/amqp-delay-fsa

Version:
36 lines (33 loc) 1.21 kB
'use strict'; 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