UNPKG

loopback-connector-bull

Version:
91 lines 6.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Promise = require("bluebird"); const Bull = require("bull"); const Redis = require("ioredis"); const loopback_connector_1 = require("loopback-connector"); const url_1 = require("url"); const data_access_object_1 = require("./data-access-object"); function redisUrlParse(url) { const redisConfig = url_1.parse(url); return { database: (redisConfig.pathname || '/0').substr(1) || '0', host: redisConfig.hostname || 'localhost', password: (redisConfig.auth && redisConfig.auth.split(':')[1]) || undefined, port: Number(redisConfig.port) || 6379 }; } class BullConnector extends loopback_connector_1.Connector { constructor(settings) { super(settings); this.queues = {}; this.queuesIndex = []; this.name = settings.name; this.setupQueue(settings); } queueForName(name) { return this.queues[name]; } setupQueue(settings) { const redisUrl = redisUrlParse(settings.url || ''); let clientRedis; let subscriberRedis; let createClient; if (settings.sharedConnection !== false) { clientRedis = new Redis(redisUrl); subscriberRedis = new Redis(redisUrl); createClient = (type) => { switch (type) { case 'client': return clientRedis; case 'subscriber': return subscriberRedis; default: return new Redis(redisUrl); } }; } const queues = settings.queues; for (const queue of queues) { const name = queue.name; const options = queue.options || {}; const queueOptions = Object.assign({}, options, { redis: redisUrl }); if (settings.sharedConnection !== false) { queueOptions.createClient = createClient; } this.queues[name] = new Bull(name, queueOptions); this.queuesIndex.push(name); } } get DataAccessObject() { return data_access_object_1.DataAccessObject; } connect() { return; } disconnect(cb) { if (this.queuesIndex.length > 0) { Promise.map(this.queuesIndex, (queueName) => { const queue = this.queues[queueName]; return new Promise(resolve => { queue.on('completed', () => { queue .close() .then(() => resolve()) .catch(() => resolve()); }); }); }) .then(cb) .catch(cb); } else if (cb) { process.nextTick(cb); } } ping() { return; } } exports.BullConnector = BullConnector; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsbC1jb25uZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVsbC1jb25uZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvQ0FBb0M7QUFDcEMsNkJBQTZCO0FBRTdCLGlDQUFpQztBQUNqQywyREFBK0M7QUFDL0MsNkJBQXdDO0FBQ3hDLDZEQUF3RDtBQUV4RCx1QkFBdUIsR0FBVztJQUNoQyxNQUFNLFdBQVcsR0FBRyxXQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsT0FBTztRQUNMLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUc7UUFDekQsSUFBSSxFQUFFLFdBQVcsQ0FBQyxRQUFRLElBQUksV0FBVztRQUN6QyxRQUFRLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUztRQUMzRSxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJO0tBQ3ZDLENBQUM7QUFDSixDQUFDO0FBRUQsbUJBQTJCLFNBQVEsOEJBQVM7SUFLMUMsWUFBWSxRQUFpQjtRQUMzQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKVixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBS2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBWTtRQUM5QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVNLFVBQVUsQ0FBQyxR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