UNPKG

redis-smq

Version:

A simple high-performance Redis message queue for Node.js.

40 lines 1.85 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-keys/redis-keys.js"); const _get_queue_properties_js_1 = require("../../queue/_/_get-queue-properties.js"); const index_js_1 = require("../../queue/index.js"); const index_js_2 = require("../errors/index.js"); function _saveConsumerGroup(redisClient, eventBus, queue, groupId, cb) { const gid = redis_keys_js_1.redisKeys.validateRedisKey(groupId); if (gid instanceof Error) cb(new index_js_2.ConsumerGroupsInvalidGroupIdError()); else { redis_smq_common_1.async.waterfall([ (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.ConsumerGroupsConsumerGroupsNotSupportedError()); else cb(); }), (cb) => { const { keyQueueConsumerGroups } = redis_keys_js_1.redisKeys.getQueueKeys(queue, gid); redisClient.sadd(keyQueueConsumerGroups, gid, (err, reply) => { if (err) cb(err); else { if (reply) eventBus.emit('queue.consumerGroupCreated', queue, groupId); cb(null, reply); } }); }, ], cb); } } //# sourceMappingURL=_save-consumer-group.js.map