UNPKG

multiconsumer-kue

Version:
34 lines 1.43 kB
"use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); const multiconsumer_queue_1 = require("multiconsumer-queue"); const redis_liveset_1 = require("redis-liveset"); __export(require("multiconsumer-queue")); class KueNamedQueue { constructor(_out) { this._out = _out; } add(topic, data) { this._out.create(topic, data).removeOnComplete(true).save(); } process(topic, fn, n = 1) { this._out.process(topic, n, fn); } } /** * Build new multi-consumer queue */ function MultiConsumerKue(queue, redis, liveSetKey = (topic) => multiconsumer_queue_1.QueueTopic(`QueueMultiConsumerGroups/${topic}`)) { return new multiconsumer_queue_1.EventBusImpl((topic) => { const kQueue = new KueNamedQueue(queue); const src = new multiconsumer_queue_1.NamedQueueWrap(topic, kQueue); const dest = new multiconsumer_queue_1.DynamicallyNamedQueue((groupId) => multiconsumer_queue_1.QueueTopic(`${topic}/${groupId}`), kQueue); const groups = redis_liveset_1.createStringsLiveSet(liveSetKey(topic), redis(), redis()); return new multiconsumer_queue_1.MultiConsumerQueueImpl(src, dest, groups, (job) => job.data); }); } exports.MultiConsumerKue = MultiConsumerKue; exports.default = MultiConsumerKue; //# sourceMappingURL=index.js.map