【问题标题】:Quartz Cron Expression for running a job every 5 hours from a given timeQuartz Cron 表达式,用于从给定时间每 5 小时运行一次作业
【发布时间】:2017-06-20 15:48:36
【问题描述】:

我正在使用 Quartz 库进行调度。从给定时间开始,我必须每 5 小时(可能是可变的)安排一次工作。

我尝试使用以下表达式 -

0 0 12/5 1/1 * ? *

我在Cronmaker 检查了未来运行的输出。

计划开始时间 -> 2017 年 6 月 21 日星期二上午 10:30

未来的运行 -

  1. 2017 年 6 月 21 日,星期三 12:00 PM
  2. 2017 年 6 月 21 日星期三下午 5:00
  3. 2017 年 6 月 21 日,星期三晚上 10:00
  4. 2017 年 6 月 22 日星期四下午 12:00

表达式按要求执行,但我希望第 4 次运行除了第 3 次运行之外还有 5 小时,即沿着这些思路 -

  1. 2017 年 6 月 21 日,星期三 12:00 PM
  2. 2017 年 6 月 21 日星期三下午 5:00
  3. 2017 年 6 月 21 日,星期三晚上 10:00
  4. 2017 年 6 月 22 日星期四凌晨 3:00

第 4 次运行进入第二天下午 12:00 的触发器。我希望将其添加到上次运行的时间。 有什么方法可以通过 cron-expression 来实现吗?

【问题讨论】:

  • 正确的表达式是0 0 0/5 1/1 * ? *

标签: java cron quartz-scheduler


【解决方案1】:

CronSchedule 不是最适合您想做的事情。

改用SimpleSchedule

trigger = newTrigger()
    .withIdentity("yourJobName", "yourJobGroup")
    .withSchedule(simpleSchedule()
        .withIntervalInHours(5) // every 5 hours
        .repeatForever()) // keep going in intervals of 5h
    .startAt(dateOf(12, 0, 0)) // start at 12:00 PM
    .build();

您可以在official documentation 中找到更多示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    相关资源
    最近更新 更多