/** * 分布式定时任务 * 加载schedule文件夹下的任务 * https://blog.pincman.com/archives/18/ * https://docs.bullmq.io * */ const config = require("./config") // const schedule = require("./schedule") const mq = require("./queue") module.exports = async (app) => { app.mq = mq const queueName = "boobam_schedule" const queue = mq.Queue(queueName); mq.QueueScheduler(queueName);//处理延时任务 await queue.obliterate();//清空所有定时任务 const list = await app.load(config.path) //等待所有插件载入完成后,启动Worker app.willReadyList.push(async () => { for (let el of list) { mq.Worker(queueName, async job => { if (job.name===el.parse.name){ el.res.fun(app) } }); await queue.add(el.parse.name,{},{ repeat: el.res.time, }) } }) }