redis-smq
Version:
A high-performance, reliable, and scalable message queue for Node.js.
39 lines • 2.36 kB
JavaScript
;
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