带有变量fixeddelay的@scheduled注释

时间:2016-11-28 13:04:00

标签: java spring-boot

我有一个计划在每20分钟后运行一次的方法。我只是在Spring启动时使用@Scheduled注释,但是我需要一个在运行时需要延迟时间的调度程序。例如。如果我希望能够在运行时更改方法执行的延迟时间/频率而不停止应用程序,即更改DB中的频率,Code应该对其进行调整。

@Scheduled(initialDelay=15*60*1000, fixedRate=20*60*1000)
public void MyMethod() {
    // Code to repeat after every 20 minutes
    }
}

代码中的固定速率应该是可变的并在运行时获取。是否有可能实现它?

1 个答案:

答案 0 :(得分:0)

你可以在更改属性文件中的固定速率之后刷新spring上下文,或使用spring cloud config,但这会引发一些问题 - refresh()应该销毁当前生活在上下文中的所有bean(单身等)并重新创建它们,因此任何可能发生的引导都会再次发生。

这是一个参考: Is spring application context reloading via ConfigurableApplicationContext refresh() considered bad-practice