如问题标题所述,我需要设置Spring Scheduler,它将运行方法将数据库中的内容加载到内存中,每天凌晨4点左右
问题是我有这个服务器的多个实例,我不想让所有人同时开始执行,因为它会减慢数据库的速度。所以我希望时间在凌晨4:00到凌晨4:30之间的某个时间点。
假设一个实例每天凌晨4:03开始,另一个实例在凌晨4:09开始,第三个在凌晨4:21等。查询的执行持续1分钟。
这可能与cron表达式有关,但是没有使用$ RANDOM bash(因为我认为我没有它),或者我可能需要以其他方式注入此随机值
@Scheduled(cron="* randomMinuteValue 4 * * *")
答案 0 :(得分:5)
使用Spring的 RandomValuePropertySource
@Scheduled(cron='0 ${random.int[0,30]} 4 * * ?')
答案 1 :(得分:1)
如果你有java 8而不是spring boot,你可以尝试以下方法:
@Scheduled(cron = "0 #{new java.util.Random().nextInt(30)} 4 * * ?")