reiso
Version:
104 lines • 6.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const QueueRaw = require("bull");
const Log = require("../Modules/Log");
const Config_1 = require("../Modules/Config");
exports.scope = {};
function Queue(name, scope = 'Main') {
return new QueueRaw(name, {
redis: Config_1.getConfig().redisHandler[scope]
});
}
exports.Queue = Queue;
function getQueues() {
let arr = [];
for (let sc in exports.scope) {
for (let name in exports.scope[sc]) {
arr.push(new QueueRaw(name, {
redis: Config_1.getConfig().redisHandler[sc]
}));
}
}
return arr;
}
exports.getQueues = getQueues;
function clearModel() {
exports.scope = {};
}
exports.clearModel = clearModel;
function getQueuesArena() {
let arr = [];
for (let sc in exports.scope) {
for (let name in exports.scope[sc]) {
arr.push(Object.assign({ name, hostId: sc }, Config_1.getConfig().redisHandler[sc]));
}
}
return arr;
}
exports.getQueuesArena = getQueuesArena;
function RegisterHandler(opt, func) {
if (!exports.scope[opt.scope || 'Main'])
exports.scope[opt.scope || 'Main'] = {};
exports.scope[opt.scope || 'Main'][opt.name] = {
count: opt.count || 1,
description: opt.description,
process: func
};
}
exports.RegisterHandler = RegisterHandler;
class HandlerManager {
constructor(name = 'Main') {
this.jobs = {};
this.name = name;
this.jobs = exports.scope[name];
}
getHandler(name) {
return this.jobs[name];
}
async runHandler(j, job) {
return await j.process(job);
}
hireHandler(j, name) {
const processQueue = new QueueRaw(name, {
redis: Config_1.getConfig().redisHandler[this.name]
});
processQueue.process(j.count, async (job, done) => {
try {
let result = await this.runHandler(j, job);
done(null, result);
return result;
}
catch (e) {
Log.logError(e, {
name: name,
scope: this.name,
id: job.id,
data: JSON.stringify(job.data),
type: 'handler'
});
done(e, null);
}
});
j.job = processQueue;
}
init(callback) {
for (let name in this.jobs) {
const job = this.getHandler(name);
this.hireHandler(job, name);
}
if (callback)
callback(this);
}
async cleanAll() {
for (const name in this.jobs) {
await this.jobs[name].job.empty();
}
}
async destroy() {
for (const name in this.jobs) {
await this.jobs[name].job.close();
}
}
}
exports.HandlerManager = HandlerManager;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TZXJ2ZXIvSGFuZGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFFakMsc0NBQXNDO0FBQ3RDLDhDQUE4QztBQUVuQyxRQUFBLEtBQUssR0FBb0QsRUFBRSxDQUFBO0FBRXRFLGVBQXNCLElBQVksRUFBRSxRQUFnQixNQUFNO0lBQ3hELE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQ3hCLEtBQUssRUFBRSxrQkFBUyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztLQUN2QyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBSkQsc0JBSUM7QUFFRDtJQUNFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUViLEtBQUssSUFBSSxFQUFFLElBQUksYUFBSyxFQUFFO1FBQ3BCLEtBQUssSUFBSSxJQUFJLElBQUksYUFBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUMxQixLQUFLLEVBQUUsa0JBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7YUFDcEMsQ0FBQyxDQUFDLENBQUM7U0FDTDtLQUNGO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBWkQsOEJBWUM7QUFFRDtJQUNFLGFBQUssR0FBRyxFQUFFLENBQUM7QUFDYixDQUFDO0FBRkQsZ0NBRUM7QUFFRDtJQUNFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUViLEtBQUssSUFBSSxFQUFFLElBQUksYUFBSyxFQUFFO1FBQ3BCLEtBQUssSUFBSSxJQUFJLElBQUksYUFBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzFCLEdBQUcsQ0FBQyxJQUFJLGlCQUNOLElBQUksRUFDSixNQUFNLEVBQUUsRUFBRSxJQUNQLGtCQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFB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