Files
simple-mail-cleaner/backend/node_modules/bullmq/dist/cjs/classes/queue-events-producer.js
2026-01-22 15:49:12 +01:00

42 lines
1.5 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.QueueEventsProducer = void 0;
const tslib_1 = require("tslib");
const queue_base_1 = require("./queue-base");
/**
* The QueueEventsProducer class is used for publishing custom events.
*/
class QueueEventsProducer extends queue_base_1.QueueBase {
constructor(name, opts = {
connection: {},
}, Connection) {
super(name, Object.assign({ blockingConnection: false }, opts), Connection);
this.opts = opts;
}
/**
* Publish custom event to be processed in QueueEvents.
* @param argsObj - Event payload
* @param maxEvents - Max quantity of events to be saved
*/
async publishEvent(argsObj, maxEvents = 1000) {
const client = await this.client;
const key = this.keys.events;
const { eventName } = argsObj, restArgs = tslib_1.__rest(argsObj, ["eventName"]);
const args = ['MAXLEN', '~', maxEvents, '*', 'event', eventName];
for (const [key, value] of Object.entries(restArgs)) {
args.push(key, value);
}
await client.xadd(key, ...args);
}
/**
* Closes the connection and returns a promise that resolves when the connection is closed.
*/
async close() {
if (!this.closing) {
this.closing = this.connection.close();
}
await this.closing;
}
}
exports.QueueEventsProducer = QueueEventsProducer;
//# sourceMappingURL=queue-events-producer.js.map