为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2023-05-24 15:15:20
我想利用 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 开始,依此类推。
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞


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



查看完整回答
反对 回复 2023-05-24
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

您可以使用以下表达式:

@Scheduled(cron = "0 1-2 * * * *", fixedRate = 5000)

具有此表达式的方法从 01:00 到 02:00 每 5 分钟运行一次。修改此表达式并将其用于两种不同的方法。每个人都应该调用您的 testCron 方法


查看完整回答
反对 回复 2023-05-24
  • 2 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信