Quartz Cron Expression用于在给定时间内每5小时运行一次作业

时间:2017-06-18 23:14:01

标签: java cron quartz-scheduler

我正在使用Quartz库进行调度。我必须在给定时间内每5个小时(可能是变量)安排一份工作。

我尝试使用以下表达式 -

0 0 12/5 1/1 *? *

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

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

未来运行 -

  1. 2017年6月21日星期三中午12:00
  2. 2017年6月21日星期三下午5:00
  3. 2017年6月21日星期三晚上10点
  4. 2017年6月22日星期四中午12:00
  5. 表达式会按照要求进行操作但是我希望第4次运行除了第3次运行之外还有5个小时,即这些行中的某些内容 -

    1. 2017年6月21日星期三中午12:00
    2. 2017年6月21日星期三下午5:00
    3. 2017年6月21日星期三晚上10点
    4. 2017年6月22日星期四凌晨3:00
    5. 第4次运行到第二天的12:00 PM触发器。我希望它被添加到上次运行的时间。 有什么办法可以通过cron-expression实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

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中找到更多示例。