redis-smq
Version:
A simple high-performance Redis message queue for Node.js.
99 lines • 3.44 kB
JavaScript
import { CallbackEmptyReplyError, logger } from 'redis-smq-common';
import { RedisClient } from '../../common/redis-client/redis-client.js';
import { Configuration } from '../../config/index.js';
import { _deleteMessage } from './_/_delete-message.js';
import { _getMessageState } from './_/_get-message-state.js';
import { _getMessageStatus } from './_/_get-message-status.js';
import { _getMessage, _getMessages } from './_/_get-message.js';
import { _requeueMessage } from './_/_requeue-message.js';
export class Message {
logger;
redisClient;
constructor() {
this.logger = logger.getLogger(Configuration.getSetConfig().logger, `exchange-fan-out-manager`);
this.redisClient = new RedisClient();
this.redisClient.on('error', (err) => this.logger.error(err));
}
getMessageStatus(messageId, cb) {
this.redisClient.getSetInstance((err, client) => {
if (err)
cb(err);
else if (!client)
cb(new CallbackEmptyReplyError());
else
_getMessageStatus(client, messageId, cb);
});
}
getMessageState(messageId, cb) {
this.redisClient.getSetInstance((err, client) => {
if (err)
cb(err);
else if (!client)
cb(new CallbackEmptyReplyError());
else
_getMessageState(client, messageId, cb);
});
}
getMessagesByIds(messageIds, cb) {
this.redisClient.getSetInstance((err, client) => {
if (err)
cb(err);
else if (!client)
cb(new CallbackEmptyReplyError());
else
_getMessages(client, messageIds, (err, reply) => {
if (err)
cb(err);
else if (!reply)
cb(new CallbackEmptyReplyError());
else {
cb(null, reply.map((i) => i.transfer()));
}
});
});
}
getMessageById(messageId, cb) {
this.redisClient.getSetInstance((err, client) => {
if (err)
cb(err);
else if (!client)
cb(new CallbackEmptyReplyError());
else
_getMessage(client, messageId, (err, reply) => {
if (err)
cb(err);
else if (!reply)
cb(new CallbackEmptyReplyError());
else
cb(null, reply.transfer());
});
});
}
deleteMessagesByIds(ids, cb) {
this.redisClient.getSetInstance((err, client) => {
if (err)
cb(err);
else if (!client)
cb(new CallbackEmptyReplyError());
else
_deleteMessage(client, ids, cb);
});
}
deleteMessageById(id, cb) {
this.deleteMessagesByIds([id], cb);
}
requeueMessageById(messageId, cb) {
this.redisClient.getSetInstance((err, client) => {
if (err)
cb(err);
else if (!client)
cb(new CallbackEmptyReplyError());
else
_requeueMessage(client, messageId, cb);
});
}
shutdown = (cb) => {
this.redisClient.shutdown(cb);
};
}
//# sourceMappingURL=message.js.map