Spring 的@Scheduled(fixedDelay=...) 在午夜停止
Spring's @Scheduled(fixedDelay=...) stops at midnight
我有一个 Spring 引导应用程序,它使用具有固定延迟的 @Scheduled
注释。注释用于不同的 类 具有不同的延迟。但是,每天午夜所有计划任务都会停止 运行.
有谁知道为什么会这样?我在网上找不到任何解释。
(我正在使用 Spring Boot 的 2.0.2.RELEASE 版和 Spring Core 的 5.0.6.RELEASE 版。)
提前致谢!
我不确定停止 运行 是什么意思。
但是您需要做的第一项工作是在不同的线程上启动您的计划并将它们放入队列中。
如果停止意味着暂停一段时间,那么你创建一个新的调度,让其他调度在midnight.Maybe睡眠一段时间,新的调度应该在线程休眠时启动,以及防止的方法就是保证同一时间只有一个schedule(我说的是同一种schedule)可以放入队列。
如果你只是想在午夜杀死所有其他时间表,你只需要开始你的午夜时间表并杀死其他人。
很抱歉我的英语不好,希望这对你有帮助。
@Scheduled(fixedDelay = 1000)
void scheduleFixedDelayTask() {
System.out.println(
"Fixed delay task - " + System.currentTimeMillis() /
1000);
}
在这种情况下,上一次执行结束和下一次执行开始之间的持续时间是固定的。任务总是等到上一个任务完成。
当必须在再次 运行 之前完成上一次执行时,应使用此选项。
所以保持延迟,使上一个执行完成。
希望对您有所帮助。
感谢所有回复的人。
事实证明,这不是 Spring 的问题。似乎任务停止是因为日志停止了。真正发生的是我们跟踪日志的脚本不够智能,无法处理在午夜滚动的日志文件(脸掌)。
我有一个 Spring 引导应用程序,它使用具有固定延迟的 @Scheduled
注释。注释用于不同的 类 具有不同的延迟。但是,每天午夜所有计划任务都会停止 运行.
有谁知道为什么会这样?我在网上找不到任何解释。
(我正在使用 Spring Boot 的 2.0.2.RELEASE 版和 Spring Core 的 5.0.6.RELEASE 版。)
提前致谢!
我不确定停止 运行 是什么意思。
但是您需要做的第一项工作是在不同的线程上启动您的计划并将它们放入队列中。
如果停止意味着暂停一段时间,那么你创建一个新的调度,让其他调度在midnight.Maybe睡眠一段时间,新的调度应该在线程休眠时启动,以及防止的方法就是保证同一时间只有一个schedule(我说的是同一种schedule)可以放入队列。
如果你只是想在午夜杀死所有其他时间表,你只需要开始你的午夜时间表并杀死其他人。
很抱歉我的英语不好,希望这对你有帮助。
@Scheduled(fixedDelay = 1000)
void scheduleFixedDelayTask() {
System.out.println(
"Fixed delay task - " + System.currentTimeMillis() /
1000);
}
在这种情况下,上一次执行结束和下一次执行开始之间的持续时间是固定的。任务总是等到上一个任务完成。
当必须在再次 运行 之前完成上一次执行时,应使用此选项。
所以保持延迟,使上一个执行完成。
希望对您有所帮助。
感谢所有回复的人。
事实证明,这不是 Spring 的问题。似乎任务停止是因为日志停止了。真正发生的是我们跟踪日志的脚本不够智能,无法处理在午夜滚动的日志文件(脸掌)。