我正在使用Spring框架中的@Scheduled注释来调用一个方法。但是我的设置中有多个节点,我不希望它们都同时运行。所以我想给初始延迟设置一个随机值,以相互抵消它们。

import org.springframework.scheduling.annotation.Scheduled;

@Scheduled(fixedRate = 600000, initialDelay = <random number between 0 and 10 minutes> )

不幸的是,这里只允许使用常量表达式。还有别的办法吗?我想到用春季表达语言。

最佳答案

您可以通过Spring表达式语言配置initialDelay:

@Scheduled(fixedRate = 600000, initialDelayString = "#{ T(java.util.concurrent.ThreadLocalRandom).current().nextInt(10*60*1000) }" )

我现在没有测试该代码的IDE,所以您可能需要稍微调整一下。

关于spring - Spring @Scheduled注释随机延迟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27869800/

10-12 05:07