redis 如何在队列暂停时处理Bull.js中的可重复作业

xghobddn  于 5个月前  发布在  Redis
关注(0)|答案(1)|浏览(55)

我正在使用Bull.js处理可重复的作业。我希望能够在更新服务器时暂停队列。我计划使用Bull.js的pause方法,但我意识到,一旦队列取消暂停,Bull.js只运行暂停前注册的可重复作业。因此,如果有一些作业应该在队列暂停时运行,它们只是被忽略了。
例如,我在16:52添加了一个具有重复定义的作业,该作业每10分钟触发一次。如果我在16:55暂停队列,并在17:25取消暂停,则它只运行在暂停触发之前注册到队列的作业(应该在17:00运行的作业)。但随后它将在17:30运行下一个作业,并完全忽略应该在17:10和17:20运行的作业。
我想这种行为在大多数情况下都没问题,但在我的情况下,作业会根据时间范围和计划时间收集一些数据。例如,如果作业计划到17:00,则它会收集在16:50-17:00之间创建的数据。因此,我希望能够在队列暂停时重新运行所有错过的作业。
我很感激任何关于如何有效处理这种情况的见解或建议。谢谢!

camsedfj

camsedfj1#

事实证明,BullJS中没有解决这个用例的方法。每个可重复的作业都会创建应该在此之后运行的作业。一旦队列暂停,则不会将作业添加到队列中。当队列再次取消暂停时,延迟的作业运行并仅创建当前时间的下一个作业。

相关问题