UNPKG

redis-smq

Version:

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

58 lines 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deadLetterMessage = void 0; const redis_keys_1 = require("../../../common/redis-keys/redis-keys"); const redis_smq_common_1 = require("redis-smq-common"); function deadLetterMessageTransaction(config, mixed, message, keyQueueProcessing) { const queue = message.getDestinationQueue(); const { keyQueueDL } = redis_keys_1.redisKeys.getQueueKeys(queue); const { store, expire, queueSize } = config.messages.store.deadLettered; if (store) { mixed.lpop(keyQueueProcessing); mixed.rpush(keyQueueDL, JSON.stringify(message)); if (expire) { mixed.pexpire(keyQueueDL, expire); } if (queueSize) { mixed.ltrim(keyQueueDL, queueSize * -1, -1); } } else { mixed.rpop(keyQueueProcessing); } } function deadLetterMessage(config, mixed, message, keyQueueProcessing, unacknowledgedCause, deadLetterCause, cb) { if (mixed instanceof redis_smq_common_1.RedisClient) { if (!cb) throw new redis_smq_common_1.errors.PanicError(`Expected a callback function`); const queue = message.getDestinationQueue(); const { keyQueueDL } = redis_keys_1.redisKeys.getQueueKeys(queue); const { store, expire, queueSize } = config.messages.store.deadLettered; if (store) { if (expire || queueSize) { mixed.lpoprpushextra(keyQueueProcessing, keyQueueDL, queueSize ? queueSize * -1 : queueSize, expire, (err) => { if (err) cb(err); else cb(); }); } else { mixed.lpoprpush(keyQueueProcessing, keyQueueDL, (err) => { if (err) cb(err); else cb(); }); } } else { mixed.rpop(keyQueueProcessing, (err) => cb(err)); } } else { deadLetterMessageTransaction(config, mixed, message, keyQueueProcessing); } } exports.deadLetterMessage = deadLetterMessage; //# sourceMappingURL=dead-letter-message.js.map