UNPKG

redis-smq

Version:

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

174 lines 7.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Message = void 0; const redis_smq_common_1 = require("redis-smq-common"); const redis_client_js_1 = require("../../common/redis-client/redis-client.js"); const index_js_1 = require("../../config/index.js"); const _delete_message_js_1 = require("./_/_delete-message.js"); const _get_message_state_js_1 = require("./_/_get-message-state.js"); const _get_message_status_js_1 = require("./_/_get-message-status.js"); const _get_message_js_1 = require("./_/_get-message.js"); const _requeue_message_js_1 = require("./_/_requeue-message.js"); class Message { constructor() { this.shutdown = (cb) => { this.logger.debug('Shutting down Message instance'); this.redisClient.shutdown((err) => { if (err) { this.logger.error('Error during shutdown', { error: err.message }); cb(err); } else { this.logger.debug('Successfully shut down Message instance'); cb(); } }); }; const config = index_js_1.Configuration.getSetConfig(); this.logger = redis_smq_common_1.logger.getLogger(config.logger, this.constructor.name.toLowerCase()); this.redisClient = new redis_client_js_1.RedisClient(); this.redisClient.on('error', (err) => this.logger.error(err)); this.logger.debug('Message instance created'); } getMessageStatus(messageId, cb) { this.logger.debug('Getting message status', { messageId }); (0, redis_smq_common_1.withRedisClient)(this.redisClient, (client, cb) => { (0, _get_message_status_js_1._getMessageStatus)(client, messageId, (err, status) => { if (err) { this.logger.error('Failed to get message status', { messageId, error: err.message, }); cb(err); } else { this.logger.debug('Successfully retrieved message status', { messageId, status, }); cb(null, status); } }); }, cb); } getMessageState(messageId, cb) { this.logger.debug('Getting message state', { messageId }); (0, redis_smq_common_1.withRedisClient)(this.redisClient, (client, cb) => { (0, _get_message_state_js_1._getMessageState)(client, messageId, (err, state) => { if (err) { this.logger.error('Failed to get message state', { messageId, error: err.message, }); cb(err); } else { this.logger.debug('Successfully retrieved message state', { messageId, }); cb(null, state); } }); }, cb); } getMessagesByIds(messageIds, cb) { this.logger.debug('Getting messages by IDs', { messageCount: messageIds.length, }); (0, redis_smq_common_1.withRedisClient)(this.redisClient, (client, cb) => { (0, _get_message_js_1._getMessages)(client, messageIds, (err, reply) => { if (err) { this.logger.error('Failed to get messages', { error: err.message }); cb(err); } else if (!reply) { this.logger.error('Empty messages reply'); cb(new redis_smq_common_1.CallbackEmptyReplyError()); } else { this.logger.debug('Successfully retrieved messages', { messageCount: reply.length, }); cb(null, reply.map((i) => i.transfer())); } }); }, cb); } getMessageById(messageId, cb) { this.logger.debug('Getting message by ID', { messageId }); (0, redis_smq_common_1.withRedisClient)(this.redisClient, (client, cb) => { (0, _get_message_js_1._getMessage)(client, messageId, (err, reply) => { if (err) { this.logger.error('Failed to get message', { messageId, error: err.message, }); cb(err); } else if (!reply) { this.logger.error('Empty message reply', { messageId }); cb(new redis_smq_common_1.CallbackEmptyReplyError()); } else { this.logger.debug('Successfully retrieved message', { messageId }); cb(null, reply.transfer()); } }); }, cb); } deleteMessagesByIds(ids, cb) { this.logger.debug(`Deleting ${ids.length} messages by IDs`, { messageIds: ids, }); (0, redis_smq_common_1.withRedisClient)(this.redisClient, (client, cb) => { redis_smq_common_1.async.withCallback((cb) => (0, _delete_message_js_1._deleteMessage)(client, ids, cb), (reply, cb) => { this.logger.debug('Messages deletion completed', reply); cb(null, reply); }, cb); }, (err, result) => { if (err) { this.logger.error('Failed to delete messages by IDs', { error: err.message, messageIds: ids, }); } cb(err, result); }); } deleteMessageById(id, cb) { this.logger.debug('Deleting message by ID', { messageId: id }); this.deleteMessagesByIds([id], (err, reply) => { if (err) { this.logger.error('Failed to delete message', { messageId: id, error: err.message, }); cb(err); } else { this.logger.debug('Successfully deleted message', { messageId: id }); cb(null, reply); } }); } requeueMessageById(messageId, cb) { this.logger.debug('Requeuing message by ID', { messageId }); (0, redis_smq_common_1.withRedisClient)(this.redisClient, (client, cb) => { (0, _requeue_message_js_1._requeueMessage)(client, messageId, (err) => { if (err) { this.logger.error('Failed to requeue message', { messageId, error: err.message, }); cb(err); } else { this.logger.debug('Successfully requeued message', { messageId }); cb(); } }); }, cb); } } exports.Message = Message; //# sourceMappingURL=message.js.map