首先,需要检查作业类型是否为可重复的类型。可重复作业类型应该定义为 "repeat",将 "repeat" 传递给 add 或 create 方法。
例如,定义可重复作业类型:
queue.add('my-job', null, {
repeat: {
every: 5000 // 每5000ms执行一次
}
})
在确定作业类型定义正确后,需要检查作业是否正常运行。
通过在控制台中查看作业记录,可以检查作业是否正在重新计划,以及作业计划表中是否存在作业计划。
如果作业计划表中不存在计划的作业,则可以考虑启用重试机制。
例如,在可重复的作业上启用重试机制:
const queue = new Queue('my-queue');
queue.process((job, done) => {
// 处理作业逻辑
// 如果处理失败,则重试
done(new Error('处理失败'), { repeat: { every: 5000 } });
});
启用重试机制后,如果处理函数引发错误,Bull MQ 将自动重新计划作业。
综上所述,要解决 Bull MQ 可重复作业不触发的问题,需要确定作业类型定义正确,检查作业是否正常运行,并在需要时启用重试机制。