UNPKG

redis-smq

Version:

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

65 lines 3.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._requeueMessage = _requeueMessage; const redis_smq_common_1 = require("redis-smq-common"); const scripts_js_1 = require("../../../common/redis-client/scripts/scripts.js"); const redis_keys_js_1 = require("../../../common/redis-keys/redis-keys.js"); const index_js_1 = require("../../queue/index.js"); const index_js_2 = require("../index.js"); const _get_message_js_1 = require("./_get-message.js"); function _requeueMessage(redisClient, messageId, cb) { (0, _get_message_js_1._getMessage)(redisClient, messageId, (err, message) => { var _a; if (err) cb(err); else if (!message) cb(new redis_smq_common_1.CallbackEmptyReplyError()); else if (![ index_js_2.EMessagePropertyStatus.ACKNOWLEDGED, index_js_2.EMessagePropertyStatus.DEAD_LETTERED, ].includes(message.getStatus())) cb(new index_js_2.MessageMessageNotRequeuableError()); else { message.getMessageState().reset(); const { keyQueueProperties, keyQueuePending, keyQueuePriorityPending, keyQueueAcknowledged, keyQueueDL, } = redis_keys_js_1.redisKeys.getQueueKeys(message.getDestinationQueue(), message.getConsumerGroupId()); const messageId = message.getId(); const { keyMessage } = redis_keys_js_1.redisKeys.getMessageKeys(messageId); const status = message.getStatus(); const sourceKey = status === index_js_2.EMessagePropertyStatus.DEAD_LETTERED ? keyQueueDL : keyQueueAcknowledged; redisClient.runScript(scripts_js_1.ELuaScriptName.REQUEUE_MESSAGE, [ sourceKey, keyQueueProperties, keyQueuePriorityPending, keyQueuePending, keyMessage, ], [ index_js_1.EQueueProperty.QUEUE_TYPE, index_js_1.EQueueType.PRIORITY_QUEUE, index_js_1.EQueueType.LIFO_QUEUE, index_js_1.EQueueType.FIFO_QUEUE, index_js_2.EMessageProperty.STATUS, index_js_2.EMessagePropertyStatus.PENDING, index_js_2.EMessageProperty.STATE, messageId, (_a = message.producibleMessage.getPriority()) !== null && _a !== void 0 ? _a : '', JSON.stringify(message.getMessageState()), ], (err, reply) => { if (err) cb(err); else if (reply !== 'OK') { if (reply === 'MESSAGE_NOT_FOUND') cb(new index_js_2.MessageMessageNotFoundError()); else if (reply === 'INVALID_PARAMETERS') cb(new index_js_2.MessageInvalidParametersError()); else cb(new index_js_2.MessageError()); } else cb(); }); } }); } //# sourceMappingURL=_requeue-message.js.map