UNPKG

redis-smq

Version:

A high-performance, reliable, and scalable message queue for Node.js.

84 lines 5.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConsumerGroups = void 0; const redis_smq_common_1 = require("redis-smq-common"); const configuration_js_1 = require("../config-manager/configuration.js"); const _parse_queue_params_js_1 = require("../queue-manager/_/_parse-queue-params.js"); const _delete_consumer_group_js_1 = require("./_/_delete-consumer-group.js"); const _get_consumer_groups_js_1 = require("./_/_get-consumer-groups.js"); const _save_consumer_group_js_1 = require("./_/_save-consumer-group.js"); const with_shared_pool_connection_js_1 = require("../common/redis/redis-connection-pool/with-shared-pool-connection.js"); class ConsumerGroups { constructor() { const config = configuration_js_1.Configuration.getConfig(); this.logger = (0, redis_smq_common_1.createLogger)(config.logger, this.constructor.name.toLowerCase()); } saveConsumerGroup(queue, groupId, cb) { return redis_smq_common_1.async.withOptionalCallback(cb, (callback) => { this.logger.debug(`Saving consumer group '${groupId}' to queue: ${typeof queue === 'string' ? queue : JSON.stringify(queue)}`); const queueParams = (0, _parse_queue_params_js_1._parseQueueParams)(queue); if (queueParams instanceof Error) { this.logger.error(`Failed to parse queue parameters: ${queueParams.message}`); return callback(queueParams); } this.logger.debug(`Parsed queue parameters: ${JSON.stringify(queueParams)}`); (0, with_shared_pool_connection_js_1.withSharedPoolConnection)((client, cb) => { (0, _save_consumer_group_js_1._saveConsumerGroup)(client, queueParams, groupId, (err, result) => { if (err) { this.logger.error(`Failed to save consumer group '${groupId}': ${err.message}`); return cb(err); } this.logger.info(`Consumer group '${groupId}' ${result === 1 ? 'created' : 'already exists'} for queue: ${queueParams.name}`); cb(null, result); }); }, callback); }); } deleteConsumerGroup(queue, groupId, cb) { return redis_smq_common_1.async.withOptionalCallback(cb, (callback) => { this.logger.debug(`Deleting consumer group '${groupId}' from queue: ${typeof queue === 'string' ? queue : JSON.stringify(queue)}`); const queueParams = (0, _parse_queue_params_js_1._parseQueueParams)(queue); if (queueParams instanceof Error) { this.logger.error(`Failed to parse queue parameters: ${queueParams.message}`); return callback(queueParams); } this.logger.debug(`Parsed queue parameters: ${JSON.stringify(queueParams)}`); (0, with_shared_pool_connection_js_1.withSharedPoolConnection)((client, cb) => { (0, _delete_consumer_group_js_1._deleteConsumerGroup)(client, queueParams, groupId, (err) => { if (err) { this.logger.error(`Failed to delete consumer group '${groupId}': ${err.message}`); return cb(err); } this.logger.info(`Consumer group '${groupId}' successfully deleted from queue: ${queueParams.name}`); cb(); }); }, callback); }); } getConsumerGroups(queue, cb) { return redis_smq_common_1.async.withOptionalCallback(cb, (callback) => { this.logger.debug(`Getting consumer groups for queue: ${typeof queue === 'string' ? queue : JSON.stringify(queue)}`); const queueParams = (0, _parse_queue_params_js_1._parseQueueParams)(queue); if (queueParams instanceof Error) { this.logger.error(`Failed to parse queue parameters: ${queueParams.message}`); return callback(queueParams); } this.logger.debug(`Parsed queue parameters: ${JSON.stringify(queueParams)}`); (0, with_shared_pool_connection_js_1.withSharedPoolConnection)((client, cb) => { (0, _get_consumer_groups_js_1._getConsumerGroups)(client, queueParams, (err, groups) => { if (err) { this.logger.error(`Failed to get consumer groups: ${err.message}`); return cb(err); } this.logger.info(`Retrieved ${Number(groups === null || groups === void 0 ? void 0 : groups.length)} consumer groups for queue: ${queueParams.name}`); if (groups && groups.length > 0) { this.logger.debug(`Consumer groups: ${JSON.stringify(groups)}`); } cb(null, groups); }); }, callback); }); } } exports.ConsumerGroups = ConsumerGroups; //# sourceMappingURL=consumer-groups.js.map