redis-smq
Version:
A simple high-performance Redis message queue for Node.js.
58 lines • 2.25 kB
JavaScript
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
;