我想利用 spring cron 注释在每天三个不同的 session 中的特定时间间隔内每分钟运行一个特定服务。
例如: 第一节:上午 8:15 - 中午 12:36 第二场:中午 12:40 - 下午 3:11 第三节:下午 3:20 - 4:35。
如何设置此特定示例的 cron 表达式?
我已经在 Oracle 文档中检查过这一点,这是我遇到的最接近的实现
“0 0/5 14,18 * * ?从下午 2:00 开始到下午 2:55 结束,每 5 分钟触发一次,并且从下午 6:00 开始到下午 6:55 结束,每 5 分钟触发一次,每天”
没有不同时间和不同 session 之间间隔的实例
@Scheduled(cron = "0 29-35 11,12 * * ?")
public static void testCron() {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println("testing cron per minute " + dateFormat.format(date)); }
从上面的测试代码来看,它打印了 11:29 到 11:35 之间的注释,但没有打印 11:35 之后的注释。下一个打印输出是从 12:29 开始,依此类推。
最佳答案
为了实现这一点,您可以使用多个 @Scheduled
注释来注释您的方法,同时提高议程的可读性和易用性。
@Scheduled(cron = "0 15-36 8-12 * * ?")
@Scheduled(cron = "0 40-11 12-15 * * ?")
@Scheduled(cron = "0 20-35 15-16 * * ?")
public static void testCron() {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println("testing cron per minute " + dateFormat.format(date)); }
您可能有兴趣使用 crontab.guru 测试一些 crontab 配置。在线工具。
关于java - 如何为多个 session 实现 cron 作业,每个 session 都有自己的时间间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57394739/