Spring-启动@Scheduled Cron 表达式以在两个任务之间进行轻微延迟?
Spring-Boot @Scheduled Cron expressions to make slight delay between two tasks?
我正在使用 Spring-Boot @Scheduled Cron 来缓存从持久存储中检索到的数据。
我有两个不同的任务,
- 在缓存中设置结果
- 清除缓存
任务 1 将 运行 每 15 分钟。我已经将 cron 设置为
@Scheduled(cron = "0 0/15 * * * *")
所以频率是
12:00:00
12:15:00
12:30:00
现在我想 运行 Task2 比 Task1
早 10 秒
即
11:59:50
12:14:50
12:29:50
我正在尝试这个表达式
@Scheduled(cron = "50 0/14 * * * *")
但它每隔 14 分钟触发一次。
任何人都可以建议我解决它的解决方案吗?
我建议您使用 fixedRate
或 fixedDelay
而不是 cron 表达式。您的要求不是很复杂,因此没有必要使用 cron
.
Fixed Delay - 专门控制上次执行结束时的下一次执行时间。
固定速率 - 使 Spring 运行 定期执行任务,即使最后一次调用可能仍然是 运行ning - 不等待
上次执行完成。
使用示例:
@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
表示 "every X"。所以 0/14
表示每 14 分钟一次。
这将 运行 你的任务 2 比任务 1 早 10 秒:
@Scheduled(cron = "50 14/15 * * * *")
它将 运行 例如 11:59:50、12:14:50、12:29:50、12:44:50、12:59:50...
我正在使用 Spring-Boot @Scheduled Cron 来缓存从持久存储中检索到的数据。
我有两个不同的任务,
- 在缓存中设置结果
- 清除缓存
任务 1 将 运行 每 15 分钟。我已经将 cron 设置为
@Scheduled(cron = "0 0/15 * * * *")
所以频率是
12:00:00
12:15:00
12:30:00
现在我想 运行 Task2 比 Task1
早 10 秒即
11:59:50
12:14:50
12:29:50
我正在尝试这个表达式
@Scheduled(cron = "50 0/14 * * * *")
但它每隔 14 分钟触发一次。
任何人都可以建议我解决它的解决方案吗?
我建议您使用 fixedRate
或 fixedDelay
而不是 cron 表达式。您的要求不是很复杂,因此没有必要使用 cron
.
Fixed Delay - 专门控制上次执行结束时的下一次执行时间。
固定速率 - 使 Spring 运行 定期执行任务,即使最后一次调用可能仍然是 运行ning - 不等待 上次执行完成。
使用示例:
@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
表示 "every X"。所以 0/14
表示每 14 分钟一次。
这将 运行 你的任务 2 比任务 1 早 10 秒:
@Scheduled(cron = "50 14/15 * * * *")
它将 运行 例如 11:59:50、12:14:50、12:29:50、12:44:50、12:59:50...