UNPKG

redis-smq

Version:

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

45 lines 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._saveConsumerGroup = _saveConsumerGroup; const redis_smq_common_1 = require("redis-smq-common"); const redis_keys_js_1 = require("../../common/redis/redis-keys/redis-keys.js"); 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("../../errors/index.js"); const event_multiplexer_js_1 = require("../../event-bus/event-multiplexer.js"); const _validate_operation_js_1 = require("../../queue-operation-validator/_/_validate-operation.js"); const index_js_3 = require("../../queue-operation-validator/index.js"); const validator_js_1 = require("../../common/redis/redis-keys/validator.js"); function _saveConsumerGroup(redisClient, queue, groupId, cb) { const gid = (0, validator_js_1.validateRedisKey)(groupId); if (gid instanceof Error) cb(new index_js_2.InvalidConsumerGroupIdError()); else { redis_smq_common_1.async.series([ (cb) => (0, _validate_operation_js_1._validateOperation)(redisClient, queue, index_js_3.EQueueOperation.CREATE_CONSUMER_GROUP, cb), (cb) => (0, _get_queue_properties_js_1._getQueueProperties)(redisClient, queue, (err, properties) => { if (err) cb(err); else if (!properties) cb(new redis_smq_common_1.CallbackEmptyReplyError()); else if (properties.deliveryModel !== index_js_1.EQueueDeliveryModel.PUB_SUB) cb(new index_js_2.ConsumerGroupsNotSupportedError()); else cb(); }), (cb) => { const { keyQueueConsumerGroups } = redis_keys_js_1.redisKeys.getQueueKeys(queue.ns, queue.name, gid); redisClient.sadd(keyQueueConsumerGroups, gid, (err, reply) => { if (err) cb(err); else { if (reply) event_multiplexer_js_1.EventMultiplexer.publish('queue.consumerGroupCreated', queue, groupId); cb(null, reply); } }); }, ], (err, result) => cb(err, result === null || result === void 0 ? void 0 : result[2])); } } //# sourceMappingURL=_save-consumer-group.js.map