redis-smq
Version:
A high-performance, reliable, and scalable message queue for Node.js.
99 lines • 4.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports._getQueueProperties = _getQueueProperties;
const redis_smq_common_1 = require("redis-smq-common");
const redis_keys_js_1 = require("../../common/redis/redis-keys/redis-keys.js");
const index_js_1 = require("../../errors/index.js");
const index_js_2 = require("../types/index.js");
function parseProperties(raw) {
const properties = {
deliveryModel: index_js_2.EQueueDeliveryModel.POINT_TO_POINT,
queueType: index_js_2.EQueueType.LIFO_QUEUE,
rateLimit: null,
messagesCount: 0,
acknowledgedMessagesCount: 0,
deadLetteredMessagesCount: 0,
pendingMessagesCount: 0,
scheduledMessagesCount: 0,
processingMessagesCount: 0,
delayedMessagesCount: 0,
requeuedMessagesCount: 0,
operationalState: index_js_2.EQueueOperationalState.ACTIVE,
lockId: null,
lastStateChangeAt: null,
};
for (const key in raw) {
const keyNum = Number(key);
const value = raw[key];
switch (keyNum) {
case index_js_2.EQueueProperty.QUEUE_TYPE:
properties.queueType = Number(value);
break;
case index_js_2.EQueueProperty.DELIVERY_MODEL:
properties.deliveryModel = Number(value);
break;
case index_js_2.EQueueProperty.RATE_LIMIT:
properties.rateLimit = value ? JSON.parse(value) : null;
break;
case index_js_2.EQueueProperty.MESSAGES_COUNT:
properties.messagesCount = Number(value);
break;
case index_js_2.EQueueProperty.ACKNOWLEDGED_MESSAGES_COUNT:
properties.acknowledgedMessagesCount = Number(value);
break;
case index_js_2.EQueueProperty.DEAD_LETTERED_MESSAGES_COUNT:
properties.deadLetteredMessagesCount = Number(value);
break;
case index_js_2.EQueueProperty.SCHEDULED_MESSAGES_COUNT:
properties.scheduledMessagesCount = Number(value);
break;
case index_js_2.EQueueProperty.PROCESSING_MESSAGES_COUNT:
properties.processingMessagesCount = Number(value);
break;
case index_js_2.EQueueProperty.PENDING_MESSAGES_COUNT:
properties.pendingMessagesCount = Number(value);
break;
case index_js_2.EQueueProperty.DELAYED_MESSAGES_COUNT:
properties.delayedMessagesCount = Number(value);
break;
case index_js_2.EQueueProperty.REQUEUED_MESSAGES_COUNT:
properties.requeuedMessagesCount = Number(value);
break;
case index_js_2.EQueueProperty.OPERATIONAL_STATE:
properties.operationalState = Number(value);
break;
case index_js_2.EQueueProperty.LAST_STATE_CHANGE_AT:
properties.lastStateChangeAt = Number(value);
break;
case index_js_2.EQueueProperty.LOCK_ID:
properties.lockId = value ? value : null;
break;
default:
return new redis_smq_common_1.PanicError({
message: `Unsupported queue property type [${key}]`,
});
}
}
return properties;
}
function _getQueueProperties(redisClient, queueParams, cb) {
const { keyQueueProperties } = redis_keys_js_1.redisKeys.getQueueKeys(queueParams.ns, queueParams.name, null);
redisClient.hgetall(keyQueueProperties, (err, reply) => {
if (err)
cb(err);
else if (!reply || !Object.keys(reply).length)
cb(new index_js_1.QueueNotFoundError({
metadata: {
queue: queueParams,
},
}));
else {
const queueProperties = parseProperties(reply);
if (queueProperties instanceof Error)
cb(queueProperties);
else
cb(null, queueProperties);
}
});
}
//# sourceMappingURL=_get-queue-properties.js.map