【问题标题】:Cron expression to run everyday but not on a window每天运行但不在窗口上运行的 Cron 表达式
【发布时间】:2021-10-02 16:24:02
【问题描述】:

是否可以在 java 中为石英调度程序创建一个表达式,它每 15 分钟运行一次作业,但应该跳过从周六晚上 9 点到周日早上 6 点运行的作业?因此,该作业将每周 7 天每 15 分钟运行一次,但不应从周六晚上 9 点到周日早上 6 点运行(当时进行一些维护活动)。

【问题讨论】:

    标签: cron quartz-scheduler


    【解决方案1】:

    您可以使用石英日历排除某些日期和/或时间段。为了支持您的用例,您有两种选择:

    1. 通过实现org.quartz.Calendar 或扩展org.quartz.BaseCalendar 来实现自定义日历。在内部,您的自定义日历可以使用下面描述的两个 CronCalendar 实现。

    2. 使用两个“链式”CronCalendars。通过链接,我的意思是使用一个日历作为另一个日历的基准日历。第一个日历将排除周六晚上 9 点至午夜,第二个日历将排除周日上午 00 点至早上 6 点。这些是这两个日历使用的 cron 表达式:

      • 21-23 ? * 周六
      • 00-05 ? * 太阳

    这里有几个例子展示了如何在你的代码中使用日历:

    http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-04.html

    https://www.javarticles.com/2016/06/quartz-calendar-example.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2020-02-20
      • 2014-05-01
      • 2016-04-28
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      相关资源
      最近更新 更多