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