UNPKG

redis-smq

Version:

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

34 lines 1.59 kB
import { async } from 'redis-smq-common'; import { ConsumerHeartbeat } from '../consumer-heartbeat/consumer-heartbeat.js'; import { consumerQueues } from '../consumer-queues.js'; import { processingQueue } from '../message-handler/processing-queue/processing-queue.js'; import { EMessageUnknowledgmentReason, } from '../types/index.js'; import { Worker } from './worker.js'; class WatchConsumersWorker extends Worker { work = (cb) => { const redisClient = this.redisClient.getInstance(); if (redisClient instanceof Error) { cb(redisClient); return void 0; } consumerQueues.getQueueConsumerIds(redisClient, this.queueParsedParams.queueParams, (err, consumerIds) => { if (err) cb(err); else { async.eachOf(consumerIds ?? [], (consumerId, _, done) => { ConsumerHeartbeat.isConsumerAlive(redisClient, consumerId, (err, alive) => { if (err) done(err); else if (!alive) { processingQueue.unknowledgeMessage(redisClient, consumerId, [this.queueParsedParams.queueParams], this.logger, EMessageUnknowledgmentReason.OFFLINE_CONSUMER, (err) => done(err)); } else done(); }); }, (err) => cb(err)); } }); }; } export default (payload) => new WatchConsumersWorker(payload); //# sourceMappingURL=watch-consumers.worker.js.map