Java Spring Boot@Scheduled Cron表达式在两个任务之间产生轻微延迟?
我使用Spring Boot@Scheduled Cron缓存从持久性存储检索到的数据 我有两个不同的任务 在缓存中设置结果 清除缓存 Task1将每15分钟运行一次。我设置了cron-likeJava Spring Boot@Scheduled Cron表达式在两个任务之间产生轻微延迟?,java,spring-boot,cron,annotations,quartz-scheduler,Java,Spring Boot,Cron,Annotations,Quartz Scheduler,我使用Spring Boot@Scheduled Cron缓存从持久性存储检索到的数据 我有两个不同的任务 在缓存中设置结果 清除缓存 Task1将每15分钟运行一次。我设置了cron-like @Scheduled(cron = "0 0/15 * * * *") 所以频率应该是 12:00:00 12:15:00 12:30:00 现在,我想在Task1之前10秒运行Task2 即 11:59:50 12:14:50 12:29:50 我在尝试这个表达 @Scheduled(cron =
@Scheduled(cron = "0 0/15 * * * *")
所以频率应该是
12:00:00
12:15:00
12:30:00
现在,我想在Task1之前10秒运行Task2
即
11:59:50
12:14:50
12:29:50
我在尝试这个表达
@Scheduled(cron = "50 0/14 * * * *")
但它每隔14分钟发射一次
有人能给我一个解决方案吗?我建议您使用fixedRate或fixedDelay而不是cron表达式。您的需求不是很复杂,所以使用cron没有意义
固定延迟-具体控制最后一次执行完成时的下一次执行时间
固定速率-使Spring以周期性的间隔运行任务,即使最后一次调用可能仍在运行-不等待
完成上一次执行
使用示例:
@Scheduled(fixedDelay = 900000) // 15 minutes
public void taskOne() {
...
}
@Scheduled(fixedDelay = 890000) // 14 minutes 50 seconds
public void taskTwo() {
...
}
尝试:
@Scheduled(cron = "50 59/15 * * * *")
说明:
50 59/15 * * * * = at 50 seconds, every hour at 59 minute, every 15 minutes
50 59/15 * * * * = starting at 11:59:50 for every 15 minutes.
你的问题是*/X表示每X一次,所以0/14表示每14分钟一次
:这将在Task1之前10秒运行Task2:
@Scheduled(cron = "50 14/15 * * * *")
例如,它将在11:59:50、12:14:50、12:29:50、12:44:50、12:59:50运行…您应该阅读并停止使用一些奇怪的预定缓存Thank@patrick。暂时我通过添加@Scheduledcron=5014,29,44,59****来修复它。它现在正在工作。我也试试你的。我试过这个方法。我在我的项目中使用微服务体系结构。如果在不同的时间启动多个服务实例@ScheduledfixedDelay=900000将不会在所有服务中同步工作,。这就是我改用cron的原因。