redis-smq
Version:
A simple high-performance Redis message queue for Node.js.
42 lines • 1.88 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.QueueManager = void 0;
const queue_rate_limit_1 = require("./queue-rate-limit");
const namespace_1 = require("./namespace");
const queue_metrics_1 = require("./queue-metrics");
const queue_1 = require("./queue");
const redis_smq_common_1 = require("redis-smq-common");
const configuration_1 = require("../../config/configuration");
class QueueManager {
constructor(namespace, queue, queueRateLimit, queueMetrics, redisClient) {
this.namespace = namespace;
this.queue = queue;
this.queueRateLimit = queueRateLimit;
this.queueMetrics = queueMetrics;
this.redisClient = redisClient;
}
quit(cb) {
this.redisClient.halt(cb);
}
static createInstance(config, cb) {
const cfg = (0, configuration_1.getConfiguration)(config);
const redis = cfg.redis;
(0, redis_smq_common_1.createClientInstance)(redis, (err, client) => {
if (err)
cb(err);
else if (!client)
cb(new redis_smq_common_1.errors.EmptyCallbackReplyError());
else {
const loggerCfg = cfg.logger;
const nsLogger = redis_smq_common_1.logger.getNamespacedLogger(loggerCfg, 'queue-manager');
const namespace = new namespace_1.Namespace(cfg, client, nsLogger);
const queue = new queue_1.Queue(cfg, client, nsLogger);
const queueRateLimit = new queue_rate_limit_1.QueueRateLimit(cfg, client, nsLogger);
const queueMetrics = new queue_metrics_1.QueueMetrics(cfg, client, nsLogger);
cb(null, new QueueManager(namespace, queue, queueRateLimit, queueMetrics, client));
}
});
}
}
exports.QueueManager = QueueManager;
//# sourceMappingURL=queue-manager.js.map
;