@cap-js-community/event-queue
Version:
An event queue that enables secure transactional processing of asynchronous and periodic events, featuring instant event processing with Redis Pub/Sub and load distribution across all application instances.
47 lines (36 loc) • 1.5 kB
JavaScript
;
const { RedisClient } = require("@cap-js-community/common");
const config = require("../../config");
const REDIS_CLIENT_NAME = "eventQueue";
const createMainClientAndConnect = async () => {
const redisClient = RedisClient.create(REDIS_CLIENT_NAME);
return await redisClient.createMainClientAndConnect(config.redisOptions);
};
const subscribeRedisChannel = async (channel, subscribeHandler) => {
const redisClient = RedisClient.create(REDIS_CLIENT_NAME);
const channelWithNamespace = [config.redisNamespace(false), channel].join("##");
return await redisClient.subscribeChannel(config.redisOptions, channelWithNamespace, subscribeHandler);
};
const publishMessage = async (channel, message) => {
const redisClient = RedisClient.create(REDIS_CLIENT_NAME);
const channelWithNamespace = [config.redisNamespace(false), channel].join("##");
return await redisClient.publishMessage(config.redisOptions, channelWithNamespace, message);
};
const connectionCheck = async () => {
const redisClient = RedisClient.create(REDIS_CLIENT_NAME);
return await redisClient.connectionCheck(config.redisOptions);
};
const isClusterMode = () => {
return RedisClient.create(REDIS_CLIENT_NAME).isCluster;
};
const registerShutdownHandler = (cb) => {
RedisClient.create(REDIS_CLIENT_NAME).beforeCloseHandler = cb;
};
module.exports = {
createMainClientAndConnect,
subscribeRedisChannel,
publishMessage,
connectionCheck,
isClusterMode,
registerShutdownHandler,
};