首页 > 解决方案 > 在 Node Bull 中完成后删除作业不起作用

问题描述

我正在使用节点公牛进行调度。现在对于我的工作,我将一个 cron 时间传递给它(这是一个特定的时间和日期)。现在,由于我提供了一个严格的 cron,那么它必须只运行一次,或者即使它运行第二次,也必须将其从队列中删除(我提供了 removeOnComplete: true)。

但它仍然没有被删除,它再次运行,我的队列再次处理这项工作。所以我想阻止这个。

我的添加工作功能:(数据是我的工作数据,计时是我的cron计时)

public async addJob(data: any, timings: any, jobId: any) {
    console.log('adding job');
    console.log(timings);
    const job = await this.videoQueue.add(
      {data: data},
      {
        repeat: {
          cron: timings,
        },
        jobId: jobId,
        removeOnComplete: true,
     },
    );
  return job;
}

我的流程功能:

this.videoQueue.process(async (job: any) => {
    // processing function for my job.
});

我是新节点和节点公牛。也许我犯了一个错误,但我无法调试它。

谢谢。

标签: node.js

解决方案


我可以建议你使用node-schedule包来安排 cron 时间。实际上非常容易使用

    const schedule = require('node-schedule');

    const job = schedule.scheduleJob('* * * * *', function(){
        console.log('Job runned.');
        job.cancel();
    });

推荐阅读