显然,我可以将延迟设置为我想要的日期之前的毫秒数,但在某些情况下这并不能很好地工作,最大 int 值将是一个问题。如果 Kue 做不到,我可以将距离太远的特定日期作业存储在面向客户端的应用程序使用的主数据库中,或者可能是第三个商店,我只是想避免使用多个商店这个过程。
更新:这是一个愚蠢的问题,我很快就在脑海中做了一些数学运算,但可怕地失败了,我猜,然后问,我应该在我问之前准确计算。
显然,我可以将延迟设置为我想要的日期之前的毫秒数,但在某些情况下这并不能很好地工作,最大 int 值将是一个问题。如果 Kue 做不到,我可以将距离太远的特定日期作业存储在面向客户端的应用程序使用的主数据库中,或者可能是第三个商店,我只是想避免使用多个商店这个过程。
更新:这是一个愚蠢的问题,我很快就在脑海中做了一些数学运算,但可怕地失败了,我猜,然后问,我应该在我问之前准确计算。
不幸的是,Kue 没有其他方法可以安排工作。我确实想知道你有哪些工作需要安排到溢出整数。考虑到 Kue 是由 Redis 支持的,我可能不想依赖它来安排未来很多年的工作。
如果您确实必须这样做,那么您可以将执行日期与作业一起存储,并将延迟设置得尽可能高。当需要执行时,检查该日期是否已经过去,如果没有,则只需使用剩余的 ms 重新排队作业,或者如果剩余时间仍然太高,则使用最大值。
由于JavaScript 中最大整数的大小,我不会担心它。
文档指出日期是相对于 now 的,因此您可以安排作业在未来 285,427.017 年(9,007,199,254,740,992 毫秒)内启动。尽管它说它很可能将日期转换为绝对日期,该日期具有较小但仍然相当大的限制,略低于:243,090.534 年 97,671,189,983,570,992 毫秒)。
在时间方面,我会更多地考虑 2038 年的 32 位秒溢出。