UNPKG

redis-smq

Version:

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

39 lines 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._prepareConsumerGroup = _prepareConsumerGroup; const redis_smq_common_1 = require("redis-smq-common"); const _get_queue_properties_js_1 = require("../../../queue-manager/_/_get-queue-properties.js"); const index_js_1 = require("../../../queue-manager/index.js"); const index_js_2 = require("../../../consumer-groups/index.js"); const index_js_3 = require("../../../errors/index.js"); const _generate_ephemeral_consumer_group_id_js_1 = require("./_generate-ephemeral-consumer-group-id.js"); const with_shared_pool_connection_js_1 = require("../../../common/redis/redis-connection-pool/with-shared-pool-connection.js"); function _prepareConsumerGroup(queueParams, consumerId, cb, logger) { (0, with_shared_pool_connection_js_1.withSharedPoolConnection)((redisClient, cb) => { (0, _get_queue_properties_js_1._getQueueProperties)(redisClient, queueParams.queueParams, (err, props) => { if (err) return cb(err); if (!props) return cb(new redis_smq_common_1.CallbackEmptyReplyError()); if (props.deliveryModel === index_js_1.EQueueDeliveryModel.PUB_SUB) { const consumerGroups = new index_js_2.ConsumerGroups(); let effectiveGroupId = queueParams.groupId; if (!effectiveGroupId) { logger === null || logger === void 0 ? void 0 : logger.debug(`PUB_SUB queue without provided consumer group. Creating ephemeral group '${consumerId}'...`); effectiveGroupId = (0, _generate_ephemeral_consumer_group_id_js_1._generateEphemeralConsumerGroupId)(consumerId); } return consumerGroups.saveConsumerGroup(queueParams.queueParams, effectiveGroupId, (saveErr) => { if (saveErr) return cb(saveErr); cb(null, effectiveGroupId); }); } if (queueParams.groupId) { logger === null || logger === void 0 ? void 0 : logger.error('Consumer group ID not supported for point-to-point delivery model'); return cb(new index_js_3.ConsumerGroupsNotSupportedError()); } cb(); }); }, cb); } //# sourceMappingURL=_prepare-consumer-group.js.map