如何实现Quartz指数退避策略?

时间:2017-03-16 23:38:02

标签: java quartz

目前我的石英工作是以这种方式触发的:

  • 首次安排作业时,作业将在5之后触发 分钟。
  • 作业将被触发5次,时间间隔为2 分钟。

因此,如果我在时间1安排我的工作,那么工作将在执行时执行 time1 + 5time1 + 7time1 + 9time1 + 11time1 + 13

  private org.quartz.Trigger makeTrigger() {
    org.quartz.ScheduleBuilder<org.quartz.SimpleTrigger> scheduleBuilder =
        org.quartz.SimpleScheduleBuilder.simpleSchedule()
            .withIntervalInMilliseconds(intervalMillis)
            .withRepeatCount(repeatCount);

    return org.quartz.TriggerBuilder.newTrigger()
        .withIdentity(key.getLeft(), key.getRight())
        .usingJobData(new org.quartz.JobDataMap(jobData))
        .startAt(dateTimeHelper.toStandardDate(startDateTime))
        .withSchedule(scheduleBuilder)
        .build();
  }

但我需要让工作不那么激进,所以我的问题是如何设置触发器以指数时间间隔?因此,在我在time1安排作业后,作业将在以下位置执行: time1 + 5time1 + 7time1 + 11time1 + 19time1 + 35

每次工作完成后我都应该重新安排工作吗?

0 个答案:

没有答案