2

这个问题与这个线程在 Bull 的给定 cron 时间没有被触发的可重复作业继续

我也面临同样的问题。我应该如何指定时区?我试图指定为重复:{ cron: '* 7 14 * * *', tz: 'Europe/Berlin'}

意思是在德国时区 14:07 触发作业。虽然作业列在队列中,但未触发作业。

我也试过重复:{ cron: '* 50 15 * * *', offset: datetime.getTimezoneOffset(), tz: 'Europe/Berlin'}

4

1 回答 1

1

我终于想出了解决办法。

需要注意的一点是,我没有初始化 Queuescheduler 实例。当然时区也起着至关重要的作用。但是如果没有 Queuescheduler 实例(与队列同名),作业不会被添加到队列中。Queuescheduler 实例充当簿记员。还要注意一个更重要的参数“限制”。如果您不将限制设置为 1,则计划在特定时间的作业将被无限次触发。

例如:要在德国时间每天 22:30 运行作业,配置如下所示:

    repeat: { 
        cron: '* 30 22 * * *',
        offset: datetime.getTimezoneOffset(),
        tz: 'Europe/Berlin',
        limit: 1
    }

参考:https : //docs.bullmq.io/guide/queuescheduler 在上面的链接中,文档清楚地提到 queuescheduler 实例负责记录工作。

在此链接 - https://docs.bullmq.io/guide/jobs/repeatable中,文档特别警告我们要确保我们实例化 Queuescheduler 实例。

于 2021-09-16T20:26:59.023 回答