diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/configuration/SchedulerConfig.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/configuration/SchedulerConfig.java index cf906d5..bbbb69e 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/configuration/SchedulerConfig.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/configuration/SchedulerConfig.java @@ -30,6 +30,8 @@ import it.fabioformosa.quartzmanager.scheduler.TriggerMonitorImpl; @ConditionalOnProperty(name = "quartz.enabled") public class SchedulerConfig { + private static final int DEFAULT_MISFIRE_INSTRUCTION = SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT; + private static JobDetailFactoryBean createJobDetail(Class jobClass) { JobDetailFactoryBean factoryBean = new JobDetailFactoryBean(); factoryBean.setJobClass(jobClass); @@ -45,7 +47,7 @@ public class SchedulerConfig { factoryBean.setRepeatInterval(pollFrequencyMs); factoryBean.setRepeatCount(repeatCount); factoryBean - .setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT);// in case of misfire, ignore all missed triggers and continue + .setMisfireInstruction(DEFAULT_MISFIRE_INSTRUCTION);// in case of misfire, ignore all missed triggers and continue return factoryBean; } diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/SchedulerController.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/SchedulerController.java index 2bf81f9..89427e6 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/SchedulerController.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/SchedulerController.java @@ -122,8 +122,15 @@ public class SchedulerController { TriggerBuilder triggerBuilder = trigger.getTriggerBuilder(); int intervalInMills = fromTriggerPerDayToMillsInterval(config.getTriggerPerDay()); - Trigger newTrigger = triggerBuilder.withSchedule(SimpleScheduleBuilder.simpleSchedule() - .withIntervalInMilliseconds(intervalInMills).withRepeatCount(config.getMaxCount() - 1)).build(); + + Trigger newTrigger = triggerBuilder + .withSchedule( + SimpleScheduleBuilder.simpleSchedule() + .withIntervalInMilliseconds(intervalInMills) + .withRepeatCount(config.getMaxCount() - 1) + .withMisfireHandlingInstructionNextWithRemainingCount() + ) + .build(); scheduler.rescheduleJob(triggerMonitor.getTrigger().getKey(), newTrigger); triggerMonitor.setTrigger(newTrigger);