在 Bull 中给定的 cron 时间不会触发可重复的作业
Repeatable jobs not getting triggered at given cron timing in Bull
我想使用 Bull NPM 并行执行一些数据处理,并在给定的 cron 时间开始处理每个作业
const Queue = require("bull"),
/**
* initialize the queue for executing cron jobs
**/
this.workQueue = new Queue(this.queueOptions.name, {
redis: redisConfig
});
this.workQueue.process((job, done) => {
done();
this.processJob(job)
.then(data => {
global.logger.info(`successfully-executed-job ${job.id}`);
})
.catch(error => {
global.logger.error(`JSON.stringify(error)}-in-executing-job-${job.id}`);
});
});
// here I have included Unique JobId
this.workQueue.add({}, {repeat: { cron:"5 * * * *",jobId:Date.now()});
有什么实现相同目标的建议吗?
问题现已解决,如果您遇到同样的问题,请确保您指的是正确的时区。
干杯!!
我也遇到了同样的问题。关于上述代码需要注意的一件事是未初始化 Queuescheduler 实例。当然,时区也起着至关重要的作用。但是如果没有队列调度程序实例(与队列同名),作业就不会添加到队列中。 Queuescheduler 实例充当簿记员。还要注意一个更重要的参数“limit”。如果您不将限制设置为 1,则在特定时间安排的作业将无限次触发。
例如:运行 在德国时间 22:30 每天的工作配置如下:
repeat: {
cron: '* 30 22 * * *',
offset: datetime.getTimezoneOffset(),
tz: 'Europe/Berlin',
limit: 1
}
参考:https://docs.bullmq.io/guide/queuescheduler在上面link中,文档清楚地提到队列调度器实例负责作业的簿记。
在这个link - https://docs.bullmq.io/guide/jobs/repeatable中,文档特别警告我们确保我们实例化一个Queuescheduler实例。
我想使用 Bull NPM 并行执行一些数据处理,并在给定的 cron 时间开始处理每个作业
const Queue = require("bull"),
/**
* initialize the queue for executing cron jobs
**/
this.workQueue = new Queue(this.queueOptions.name, {
redis: redisConfig
});
this.workQueue.process((job, done) => {
done();
this.processJob(job)
.then(data => {
global.logger.info(`successfully-executed-job ${job.id}`);
})
.catch(error => {
global.logger.error(`JSON.stringify(error)}-in-executing-job-${job.id}`);
});
});
// here I have included Unique JobId
this.workQueue.add({}, {repeat: { cron:"5 * * * *",jobId:Date.now()});
有什么实现相同目标的建议吗?
问题现已解决,如果您遇到同样的问题,请确保您指的是正确的时区。
干杯!!
我也遇到了同样的问题。关于上述代码需要注意的一件事是未初始化 Queuescheduler 实例。当然,时区也起着至关重要的作用。但是如果没有队列调度程序实例(与队列同名),作业就不会添加到队列中。 Queuescheduler 实例充当簿记员。还要注意一个更重要的参数“limit”。如果您不将限制设置为 1,则在特定时间安排的作业将无限次触发。
例如:运行 在德国时间 22:30 每天的工作配置如下:
repeat: {
cron: '* 30 22 * * *',
offset: datetime.getTimezoneOffset(),
tz: 'Europe/Berlin',
limit: 1
}
参考:https://docs.bullmq.io/guide/queuescheduler在上面link中,文档清楚地提到队列调度器实例负责作业的簿记。
在这个link - https://docs.bullmq.io/guide/jobs/repeatable中,文档特别警告我们确保我们实例化一个Queuescheduler实例。