猿问

如何为多个会话实现一个 cron 作业,每个会话都有自己的间隔

我想利用 spring cron 注释在每天三个不同的会话中的特定时间间隔内每分钟运行一次特定服务。


例如:第一节:上午 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 分钟触发一次,每天“


不同时间和不同会话之间的间隔没有实例


@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 开始,依此类推。


梦里花落0921
浏览 122回答 2
2回答

千万里不及你

为此,您可以使用多个@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)); }

天涯尽头无女友

您可以使用以下表达式:@Scheduled(cron = "0 1-2 * * * *", fixedRate = 5000)具有此表达式的方法从 01:00 到 02:00 每 5 分钟运行一次。修改此表达式并将其用于两种不同的方法。每个人都应该调用您的 testCron 方法
随时随地看视频慕课网APP

相关分类

Java
我要回答