gpt4 book ai didi

java - Spring Scheduled Cron 作业在错误的时间触发

转载 作者:行者123 更新时间:2023-11-29 04:25:01 24 4
gpt4 key购买 nike

我有一个 Spring Boot 应用程序,其中包含各种使用 @Scheduled 注释的调度程序。一些计划使用 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)

最佳答案

终于明白了。我没有 ThreadPoolTask​​Scheduler 设置,所以我没有预留足够大的线程池来运行我所有的计划作业。

@Configuration
public class TaskSchedulerConfig {

@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(30);
return threadPoolTaskScheduler;
}

}

关于java - Spring Scheduled Cron 作业在错误的时间触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46850667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com