UNPKG

redis-smq

Version:

A high-performance, reliable, and scalable message queue for Node.js.

96 lines 3.9 kB
import { PanicError } from 'redis-smq-common'; import { redisKeys } from '../../common/redis/redis-keys/redis-keys.js'; import { QueueNotFoundError } from '../../errors/index.js'; import { EQueueDeliveryModel, EQueueOperationalState, EQueueProperty, EQueueType, } from '../types/index.js'; function parseProperties(raw) { const properties = { deliveryModel: EQueueDeliveryModel.POINT_TO_POINT, queueType: EQueueType.LIFO_QUEUE, rateLimit: null, messagesCount: 0, acknowledgedMessagesCount: 0, deadLetteredMessagesCount: 0, pendingMessagesCount: 0, scheduledMessagesCount: 0, processingMessagesCount: 0, delayedMessagesCount: 0, requeuedMessagesCount: 0, operationalState: EQueueOperationalState.ACTIVE, lockId: null, lastStateChangeAt: null, }; for (const key in raw) { const keyNum = Number(key); const value = raw[key]; switch (keyNum) { case EQueueProperty.QUEUE_TYPE: properties.queueType = Number(value); break; case EQueueProperty.DELIVERY_MODEL: properties.deliveryModel = Number(value); break; case EQueueProperty.RATE_LIMIT: properties.rateLimit = value ? JSON.parse(value) : null; break; case EQueueProperty.MESSAGES_COUNT: properties.messagesCount = Number(value); break; case EQueueProperty.ACKNOWLEDGED_MESSAGES_COUNT: properties.acknowledgedMessagesCount = Number(value); break; case EQueueProperty.DEAD_LETTERED_MESSAGES_COUNT: properties.deadLetteredMessagesCount = Number(value); break; case EQueueProperty.SCHEDULED_MESSAGES_COUNT: properties.scheduledMessagesCount = Number(value); break; case EQueueProperty.PROCESSING_MESSAGES_COUNT: properties.processingMessagesCount = Number(value); break; case EQueueProperty.PENDING_MESSAGES_COUNT: properties.pendingMessagesCount = Number(value); break; case EQueueProperty.DELAYED_MESSAGES_COUNT: properties.delayedMessagesCount = Number(value); break; case EQueueProperty.REQUEUED_MESSAGES_COUNT: properties.requeuedMessagesCount = Number(value); break; case EQueueProperty.OPERATIONAL_STATE: properties.operationalState = Number(value); break; case EQueueProperty.LAST_STATE_CHANGE_AT: properties.lastStateChangeAt = Number(value); break; case EQueueProperty.LOCK_ID: properties.lockId = value ? value : null; break; default: return new PanicError({ message: `Unsupported queue property type [${key}]`, }); } } return properties; } export function _getQueueProperties(redisClient, queueParams, cb) { const { keyQueueProperties } = 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 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