这个问题是在这个线程的延续可重复的工作没有被触发在给定的cron时间在公牛
我也面临同样的问题。我应该如何指定时区?我尝试指定为
repeat: { cron: '* 7 14 * * *', tz: 'Europe/Berlin'}
表示在德国时区14:07触发作业。虽然作业列在队列中,但是作业没有被触发。
我也试着重复:
{
cron: '* 50 15 * * *',
offset: datetime.getTimezoneOffset(),
tz: 'Europe/Berlin'
}
我终于想出解决办法了。
需要注意的一点是,我还没有初始化queuesscheduler实例。当然时区也起着至关重要的作用。但是如果没有queuesscheduler实例(与Queue具有相同的名称),作业就不会被添加到队列中。queuesscheduler实例充当簿记员。还要注意另一个重要的参数"限制"。如果您不将限制设置为1,那么在特定时间调度的作业将被无限次触发。
要在德国时间每天22:30运行作业,配置如下:repeat: {
cron: '* 30 22 * * *',
offset: datetime.getTimezoneOffset(),
tz: 'Europe/Berlin',
limit: 1
}
Reference: https://docs.bullmq.io/guide/queuescheduler在上面的链接中,文档清楚地提到队列调度器实例负责记录作业。
在这个链接- https://docs.bullmq.io/guide/jobs/repeatable中,文档特别警告我们要确保我们实例化了一个queuesscheduler实例。
您需要在QueueSchedular的帮助下管理可重复的队列。QueueSchedular将队列名作为第一个参数,连接作为第二个参数。代码如下:
const queueSchedular = new QueueSchedular(yourQueue.name, { connection });