正如问题标题所述,我需要设置 Spring Scheduler,它将运行方法以每天凌晨 4 点左右将某些内容从数据库加载到内存中
问题是我有该服务器的多个实例,我不希望所有实例同时开始执行,因为它会减慢数据库的速度。所以我希望时间是 4:00AM 到 4:30AM 之间的随机时间
假设一个实例将在每天凌晨 4:03 启动,另一个实例将在凌晨 4:09 启动,第三个实例将在凌晨 4:21 启动,依此类推。查询的执行持续 1 分钟。
这是否可以与 cron 表达式有关,但不使用 $RANDOM bash (因为我认为我没有它),或者也许我需要以其他方式注入这个随机值
@Scheduled(cron="* randomMinuteValue 4 * * *")
如果你使用Spring Boot,你可以使用随机值属性源:
@Scheduled(cron="0 ${random.int[0,30]} 4 * * ?")
请注意,随机值是在 Spring 上下文初始化时(即通常在应用程序启动时)计算的,之后每天都会使用相同的时间,直到重新启动。
它不是完全随机的,但适合 OP 避免活动高峰的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)