要解决 "Bull MQ 可重复任务被清除" 的问题,可以使用以下代码示例:
const Queue = require('bull');
// 创建 Bull MQ 队列
const queue = new Queue('myQueue', {
redis: {
host: 'localhost',
port: 6379,
},
});
// 添加可重复任务到队列
async function addRepeatableJob() {
const jobData = {
foo: 'bar',
};
const repeatOptions = {
cron: '0 0 * * *', // 设置任务执行时间
tz: 'Etc/GMT+0', // 设置任务执行时区
};
await queue.add('myJob', jobData, {
repeat: repeatOptions,
});
}
// 监听任务完成事件
queue.on('completed', (job) => {
console.log(`Job ${job.id} completed`);
});
// 监听任务失败事件
queue.on('failed', (job, error) => {
console.log(`Job ${job.id} failed: ${error.message}`);
});
// 监听任务被清除事件
queue.on('cleaned', (jobs, type) => {
console.log(`${jobs.length} ${type} jobs cleaned`);
});
// 添加可重复任务到队列
addRepeatableJob().catch(console.error);
上述代码示例使用 Bull MQ 创建一个名为 "myQueue" 的队列,并添加了一个可重复任务。任务被设置为每天的 00:00 执行,并且使用 GMT 时区。
同时,代码还监听了任务完成、失败和被清除的事件,并在控制台输出相应的信息。
请注意,上述代码示例假设已经安装了 Bull MQ 和 redis 模块,且 redis 服务器运行在本地主机上的默认端口 6379。您需要根据您的实际情况进行相应的配置和调整。