如问题标题所述,我需要设置Spring Scheduler,它将每天凌晨4点左右运行将数据库中的内容加载到内存中的方法
事实是,我有该服务器的多个实例,并且我不想所有人都同时开始执行,因为这会减慢数据库的速度。所以我希望时间是在凌晨4:00 AM和4:30 AM之间的某个随机时间
因此,可以说一个实例每天4:03 AM开始,另一个实例每天4:09 AM开始,第三个实例在4:21 AM开始,依此类推。查询执行持续1分钟。
这可能与cron表达式有关,但是没有使用$ RANDOM bash(因为我认为我没有它),或者也许我需要以其他方式注入此随机值
@Scheduled(cron="* randomMinuteValue 4 * * *")
Run Code Online (Sandbox Code Playgroud)
从Spring 使用RandomValuePropertySource
@Scheduled(cron="0 ${random.int[0,30]} 4 * * ?")
Run Code Online (Sandbox Code Playgroud)
如果您有 java 8 但没有 spring boot,您可以尝试以下操作:
@Scheduled(cron = "0 #{new java.util.Random().nextInt(30)} 4 * * ?")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1884 次 |
| 最近记录: |