【发布时间】:2018-04-01 17:13:30
【问题描述】:
我有一个带有各种使用 @Scheduled 注解的调度程序的 Spring Boot 应用程序。一些时间表是使用 fixedRate 设置的,其他的则使用 cron。 fixedRate 计划运行良好,但我注意到在过去一个月中,cron 计划触发的实际时间每天会变化 1-2 小时。
即具有 cron 设置的作业
@Scheduled(cron = "0 0 2 * * *")
将在凌晨 3:00 而不是凌晨 2:00 触发。它也不是每天都在发生。它会在同一时间连续运行几天,然后发生一些事情,每次运行它都会再关闭一个小时,直到我重新启动应用程序。
服务器上的系统时间是准确的,我在这里完全没有想法。有没有人遇到过这种情况?
编辑 1
我输入了一些日志来确定作业是否在相同的时间间隔内误触发,结果似乎是随机的。以下是上述 cron 作业在三天内的开始/结束时间:
Format: Calendar.getInstance().getTime() (System.currentTimeMillis())
Start: Sat Oct 21 03:14:15 CDT 2017 (1508573655778)
End: Sat Oct 21 03:22:24 CDT 2017 (1508574144708)
Start: Sun Oct 22 02:26:58 CDT 2017 (1508657218774)
End: Sun Oct 22 02:35:12 CDT 2017 (1508657712492)
Start: Mon Oct 23 02:00:03 CDT 2017 (1508742003072)
End: Mon Oct 23 02:08:11 CDT 2017 (1508742491493)
【问题讨论】:
标签: java spring spring-boot cron spring-scheduled