Как правильно перепланировать кварцевые работы - PullRequest
0 голосов
/ 02 июня 2019

Я бы хотел переназначить работу с кварцем. Я прошел через некоторые из полученных ответов (например, Как переназначить интервал выполнения задания в Кварце? ).

Что я хочу сделать, это:

  1. Запланировать выполнение задания в указанное время

  2. Перепланируйте задание так, чтобы оно повторялось каждые две минуты.

Так что в общем случае задание должно запускаться 3 раза.

Мой основной класс:

    public class Main{



          public static void main(String[] args) throws Exception {

                JobDetail job = JobBuilder.newJob(HelloJob.class)
                        .withIdentity("dummyJobName", "group1").build();

                    Trigger trigger = TriggerBuilder.newTrigger()
                        .withIdentity("dummyTriggerName", "group1")
                        .withSchedule(
                                CronScheduleBuilder.cronSchedule("0 41 16 1/1 * ? *"))
                        .build();

                    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
                    scheduler.start();
                    scheduler.scheduleJob(job, trigger);
          }

}

и класс задания:

public class HelloJob implements Job{



    public void execute(JobExecutionContext context)
            throws JobExecutionException {

                System.out.println("Hello Quartz!  " + context.getTrigger().toString());    
                Trigger newTrigger = TriggerBuilder.newTrigger()
                        .withIdentity("dummyTriggerName", "group1")
                        .withSchedule(
                                SimpleScheduleBuilder.repeatMinutelyForTotalCount(2))
                        .build();

                Trigger oldTrigger = context.getTrigger();
                Scheduler scheduler = null;
                try {
                    scheduler = StdSchedulerFactory.getDefaultScheduler();
                    scheduler.rescheduleJob(oldTrigger.getKey(), newTrigger);

                } catch (SchedulerException e1) {
                    e1.printStackTrace();
                }

            }
}

Когда я запускаю код, он дает мне:

Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
Hello Quartz!  Trigger 'group1.dummyTriggerName':  triggerClass: 'org.quartz.impl.triggers.SimpleTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Sun Jun 02 16:42:00 CEST 2019
......

И это в консоли похоже на повторение много раз в секунду и не может остановиться. Исходный триггер срабатывает, как и ожидалось (это из основного класса), но при перепланировании в классе HelloJob он сходит с ума.

Я не понимаю, почему он так себя ведет. Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...