Added the MisfireTestJob and switched misfire policy to reschedule with

existing count
This commit is contained in:
fabio.formosa
2016-11-05 21:20:02 +01:00
parent 57c8e1b8bd
commit 57085788c6
2 changed files with 35 additions and 12 deletions

View File

@@ -4,6 +4,7 @@ import java.io.IOException;
import java.util.Properties;
import org.quartz.JobDetail;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.spi.JobFactory;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -32,15 +33,15 @@ public class SchedulerConfig {
return factoryBean;
}
private static SimpleTriggerFactoryBean createTrigger(JobDetail jobDetail,
long pollFrequencyMs, int repeatCount) {
private static SimpleTriggerFactoryBean createTrigger(JobDetail jobDetail, long pollFrequencyMs,
int repeatCount) {
SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean();
factoryBean.setJobDetail(jobDetail);
factoryBean.setStartDelay(0L);
factoryBean.setRepeatInterval(pollFrequencyMs);
factoryBean.setRepeatCount(repeatCount);
// factoryBean.setMisfireInstruction(
// SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT);// in case of misfire, ignore all missed triggers and continue
factoryBean
.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT);// in case of misfire, ignore all missed triggers and continue
return factoryBean;
}
@@ -59,24 +60,20 @@ public class SchedulerConfig {
@Bean
public Properties quartzProperties() throws IOException {
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
propertiesFactoryBean
.setLocation(new ClassPathResource("/quartz.properties"));
propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
propertiesFactoryBean.afterPropertiesSet();
return propertiesFactoryBean.getObject();
}
@Bean(name = "jobTrigger")
public SimpleTriggerFactoryBean sampleJobTrigger(
@Qualifier("jobDetail") JobDetail jobDetail,
@Value("${job.frequency}") long frequency,
@Value("${job.repeatCount}") int repeatCount) {
public SimpleTriggerFactoryBean sampleJobTrigger(@Qualifier("jobDetail") JobDetail jobDetail,
@Value("${job.frequency}") long frequency, @Value("${job.repeatCount}") int repeatCount) {
return createTrigger(jobDetail, frequency, repeatCount);
}
@Bean(name = "scheduler")
public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory,
@Qualifier("jobTrigger") Trigger sampleJobTrigger)
throws IOException {
@Qualifier("jobTrigger") Trigger sampleJobTrigger) throws IOException {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setJobFactory(jobFactory);
factory.setQuartzProperties(quartzProperties());

View File

@@ -0,0 +1,26 @@
package it.fabioformosa.quartzmanager.jobs;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import it.fabioformosa.quartzmanager.jobs.entities.LogRecord;
import it.fabioformosa.quartzmanager.jobs.entities.LogRecord.LogType;
public class MisfireTestJob extends AbstractLoggingJob {
private Logger log = LoggerFactory.getLogger(MisfireTestJob.class);
@Override
public LogRecord doIt(JobExecutionContext jobExecutionContext) {
try {
log.info("{} is going to sleep...", Thread.currentThread().getName());
Thread.sleep(10 * 1000);
log.info("{} woke up!", Thread.currentThread().getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
return new LogRecord(LogType.INFO, "Hello!");
}
}