UNPKG

bull-arena

Version:

An interactive UI dashboard for Bee Queue

71 lines (55 loc) 1.56 kB
const _ = require('lodash'); const Bull = require('bull'); const Bee = require('bee-queue'); const path = require('path'); class Queues { constructor(config) { this._queues = {}; this.setConfig(config); } list() { return this._config.queues; } setConfig(config) { this._config = config; } async get(queueName, queueHost) { const queueConfig = _.find(this._config.queues, { name: queueName, hostId: queueHost }); if (!queueConfig) return null; if (this._queues[queueHost] && this._queues[queueHost][queueName]) { return this._queues[queueHost][queueName]; } const { type, name, port, host, db, password, prefix, url, redis } = queueConfig; const redisHost = { host }; if (password) redisHost.password = password; if (port) redisHost.port = port; if (db) redisHost.db = db; const isBee = type === 'bee'; let queue; if (isBee) { const options = { redis: redis || url || redisHost, isWorker: false, getEvents: false, sendEvents: false, storeJobs: false }; if (prefix) options.prefix = prefix; queue = new Bee(name, options); queue.IS_BEE = true; } else { const options = { redis: redis || redisHost }; if (prefix) options.prefix = prefix; queue = new Bull(name, options || url); } this._queues[queueHost] = this._queues[queueHost] || {}; this._queues[queueHost][queueName] = queue; return queue; } } module.exports = Queues;