@Test public void createWithoutJobDetail() throws ParseException { SimpleTriggerFactoryBean factory = new SimpleTriggerFactoryBean(); factory.setName("myTrigger"); factory.setRepeatCount(5); factory.setRepeatInterval(1000L); factory.afterPropertiesSet(); SimpleTrigger trigger = factory.getObject(); assertEquals(5, trigger.getRepeatCount()); assertEquals(1000L, trigger.getRepeatInterval()); }
@Test public void schedulerWithSpringBeanJobFactory() throws Exception { Assume.group(TestGroup.PERFORMANCE); DummyJob.param = 0; DummyJob.count = 0; JobDetailImpl jobDetail = new JobDetailImpl(); jobDetail.setDurability(true); jobDetail.setJobClass(DummyJob.class); jobDetail.setName("myJob"); jobDetail.getJobDataMap().put("param", "10"); jobDetail.getJobDataMap().put("ignoredParam", "10"); SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean(); trigger.setName("myTrigger"); trigger.setJobDetail(jobDetail); trigger.setStartDelay(1); trigger.setRepeatInterval(500); trigger.setRepeatCount(1); trigger.afterPropertiesSet(); SchedulerFactoryBean bean = new SchedulerFactoryBean(); bean.setJobFactory(new SpringBeanJobFactory()); bean.setTriggers(trigger.getObject()); bean.setJobDetails(jobDetail); bean.afterPropertiesSet(); bean.start(); Thread.sleep(500); assertEquals(10, DummyJob.param); assertTrue("DummyJob should have been executed at least once.", DummyJob.count > 0); bean.destroy(); }
@Test public void schedulerWithSpringBeanJobFactoryAndParamMismatchNotIgnored() throws Exception { Assume.group(TestGroup.PERFORMANCE); DummyJob.param = 0; DummyJob.count = 0; JobDetailImpl jobDetail = new JobDetailImpl(); jobDetail.setDurability(true); jobDetail.setJobClass(DummyJob.class); jobDetail.setName("myJob"); jobDetail.getJobDataMap().put("para", "10"); jobDetail.getJobDataMap().put("ignoredParam", "10"); SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean(); trigger.setName("myTrigger"); trigger.setJobDetail(jobDetail); trigger.setStartDelay(1); trigger.setRepeatInterval(500); trigger.setRepeatCount(1); trigger.afterPropertiesSet(); SchedulerFactoryBean bean = new SchedulerFactoryBean(); SpringBeanJobFactory jobFactory = new SpringBeanJobFactory(); jobFactory.setIgnoredUnknownProperties("ignoredParam"); bean.setJobFactory(jobFactory); bean.setTriggers(trigger.getObject()); bean.setJobDetails(jobDetail); bean.afterPropertiesSet(); Thread.sleep(500); assertEquals(0, DummyJob.param); assertTrue(DummyJob.count == 0); bean.destroy(); }
@Test public void schedulerWithQuartzJobBean() throws Exception { Assume.group(TestGroup.PERFORMANCE); DummyJob.param = 0; DummyJob.count = 0; JobDetailImpl jobDetail = new JobDetailImpl(); jobDetail.setDurability(true); jobDetail.setJobClass(DummyJobBean.class); jobDetail.setName("myJob"); jobDetail.getJobDataMap().put("param", "10"); SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean(); trigger.setName("myTrigger"); trigger.setJobDetail(jobDetail); trigger.setStartDelay(1); trigger.setRepeatInterval(500); trigger.setRepeatCount(1); trigger.afterPropertiesSet(); SchedulerFactoryBean bean = new SchedulerFactoryBean(); bean.setTriggers(trigger.getObject()); bean.setJobDetails(jobDetail); bean.afterPropertiesSet(); bean.start(); Thread.sleep(500); assertEquals(10, DummyJobBean.param); assertTrue(DummyJobBean.count > 0); bean.destroy(); }
@Test public void schedulerWithSpringBeanJobFactoryAndQuartzJobBean() throws Exception { Assume.group(TestGroup.PERFORMANCE); DummyJobBean.param = 0; DummyJobBean.count = 0; JobDetailImpl jobDetail = new JobDetailImpl(); jobDetail.setDurability(true); jobDetail.setJobClass(DummyJobBean.class); jobDetail.setName("myJob"); jobDetail.getJobDataMap().put("param", "10"); SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean(); trigger.setName("myTrigger"); trigger.setJobDetail(jobDetail); trigger.setStartDelay(1); trigger.setRepeatInterval(500); trigger.setRepeatCount(1); trigger.afterPropertiesSet(); SchedulerFactoryBean bean = new SchedulerFactoryBean(); bean.setJobFactory(new SpringBeanJobFactory()); bean.setTriggers(trigger.getObject()); bean.setJobDetails(jobDetail); bean.afterPropertiesSet(); bean.start(); Thread.sleep(500); assertEquals(10, DummyJobBean.param); assertTrue(DummyJobBean.count > 0); bean.destroy(); }
@Test public void schedulerWithTaskExecutor() throws Exception { Assume.group(TestGroup.PERFORMANCE); CountingTaskExecutor taskExecutor = new CountingTaskExecutor(); DummyJob.count = 0; JobDetailImpl jobDetail = new JobDetailImpl(); jobDetail.setDurability(true); jobDetail.setJobClass(DummyJob.class); jobDetail.setName("myJob"); SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean(); trigger.setName("myTrigger"); trigger.setJobDetail(jobDetail); trigger.setStartDelay(1); trigger.setRepeatInterval(500); trigger.setRepeatCount(1); trigger.afterPropertiesSet(); SchedulerFactoryBean bean = new SchedulerFactoryBean(); bean.setTaskExecutor(taskExecutor); bean.setTriggers(trigger.getObject()); bean.setJobDetails(jobDetail); bean.afterPropertiesSet(); bean.start(); Thread.sleep(500); assertTrue("DummyJob should have been executed at least once.", DummyJob.count > 0); assertEquals(DummyJob.count, taskExecutor.count); bean.destroy(); }
/** * @see SimpleTriggerFactoryBean#setRepeatInterval(long) * @param repeatInterval * @return */ public QuartzSimpleTriggerBuilder repeatInterval(long repeatInterval) { triggerFactoryBean.setRepeatInterval(repeatInterval); return this; }
@Bean public SimpleTriggerFactoryBean trigger(final JobDetail simpleJobDetail) { final SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean(); trigger.setJobDetail(simpleJobDetail); // got warning about wrong type trigger.setRepeatInterval(60000); return trigger; }
@Bean @Qualifier("userScheduledIndexationTrigger") public SimpleTriggerFactoryBean userScheduledIndexationTrigger( @Qualifier("userIndexationFullJob") JobDetail userIndexationFullJob) { SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean(); factoryBean.setName("User re-indexation"); factoryBean.setDescription("Periodic re-indexation of all users of the application"); factoryBean.setJobDetail(userIndexationFullJob); factoryBean.setStartDelay((long) 30 * 1000); factoryBean.setRepeatInterval(1 * 60 * 60 * 1000); factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); factoryBean.setMisfireInstruction( SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT); return factoryBean; }
@Bean @Qualifier("groupScheduledIndexationTrigger") public SimpleTriggerFactoryBean groupScheduledIndexationTrigger( @Qualifier("groupIndexationFullJob") JobDetail groupIndexationFullJob) { SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean(); factoryBean.setName("Group re-indexation"); factoryBean.setDescription("Periodic re-indexation of all groups of the application"); factoryBean.setJobDetail(groupIndexationFullJob); factoryBean.setStartDelay((long) 30 * 1000); factoryBean.setRepeatInterval(1 * 60 * 60 * 1000); factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); factoryBean.setMisfireInstruction( SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT); return factoryBean; }
@Bean @Qualifier("fileScheduledIndexationTrigger") public SimpleTriggerFactoryBean fileScheduledIndexationTrigger( @Qualifier("fileIndexationFullJob") JobDetail fileIndexationFullJob) { SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean(); factoryBean.setName("File re-indexation"); factoryBean.setDescription("Periodic re-indexation of all files of the application"); factoryBean.setJobDetail(fileIndexationFullJob); factoryBean.setStartDelay((long) 30 * 1000); factoryBean.setRepeatInterval(1 * 60 * 60 * 1000); factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); factoryBean.setMisfireInstruction( SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT); return factoryBean; }
@Bean @Qualifier("articleScheduledIndexationTrigger") public SimpleTriggerFactoryBean articleScheduledIndexationTrigger( @Qualifier("articleIndexationFullJob") JobDetail articleIndexationFullJob) { SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean(); factoryBean.setName("Article re-indexation"); factoryBean.setDescription("Periodic re-indexation of all articles of the application"); factoryBean.setJobDetail(articleIndexationFullJob); factoryBean.setStartDelay((long) 30 * 1000); factoryBean.setRepeatInterval(1 * 60 * 60 * 1000); factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); factoryBean.setMisfireInstruction( SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT); return factoryBean; }
@Bean @Qualifier("roleScheduledIndexationTrigger") public SimpleTriggerFactoryBean roleScheduledIndexationTrigger( @Qualifier("roleIndexationFullJob") JobDetail roleIndexationFullJob) { SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean(); factoryBean.setName("Role re-indexation"); factoryBean.setDescription("Periodic re-indexation of all roles of the application"); factoryBean.setJobDetail(roleIndexationFullJob); factoryBean.setStartDelay((long) 30 * 1000); factoryBean.setRepeatInterval(1 * 60 * 60 * 1000); factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); factoryBean.setMisfireInstruction( SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT); return factoryBean; } }
triggerFactoryBean.setRepeatInterval(1); triggerFactoryBean.setRepeatCount(0);
public static SimpleTriggerFactoryBean createTrigger(JobDetail jobDetail, long pollFrequencyMs) { SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean(); factoryBean.setJobDetail(jobDetail); factoryBean.setStartDelay(0L); factoryBean.setRepeatInterval(pollFrequencyMs); factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); // in case of misfire, ignore all missed triggers and continue : factoryBean.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT); return factoryBean; }
private static SimpleTriggerFactoryBean createTrigger(JobDetail jobDetail, long pollFrequencyMs) { SimpleTriggerFactoryBean factoryBean = new SimpleTriggerFactoryBean(); factoryBean.setJobDetail(jobDetail); factoryBean.setStartDelay(0L); factoryBean.setRepeatInterval(pollFrequencyMs); factoryBean.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY); // in case of misfire, ignore all missed triggers and continue : factoryBean.setMisfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT); return factoryBean; }
@Override public Trigger buildTrigger(JobTrigger jobTrigger, JobDetail jobDetail) { Preconditions.checkArgument(isApplicable(jobTrigger.getClass()), "Not supported jobTrigger type: " + jobTrigger.getClass()); simpleTriggerFactoryBean.setRepeatCount(((SimpleJobTrigger) jobTrigger).getRepeatCount()); simpleTriggerFactoryBean.setStartDelay(((SimpleJobTrigger) jobTrigger).getStartDelay()); simpleTriggerFactoryBean.setRepeatInterval(((SimpleJobTrigger) jobTrigger).getRepeatInterval()); simpleTriggerFactoryBean.setJobDetail(jobDetail); simpleTriggerFactoryBean.setGroup(jobDetail.getKey().getGroup()); simpleTriggerFactoryBean.setName(jobDetail.getKey().getName()); Map<String, Object> triggerInstance = new HashMap<String, Object>(); triggerInstance.put(JOB_TRIGGER_CLASS, SimpleJobTrigger.class.getName()); triggerInstance.put(JOB_TRIGGER_INSTANCE, convertToList((SimpleJobTrigger) jobTrigger)); // This not work // simpleTriggerFactoryBean.setJobDataAsMap(triggerInstance); jobDetail.getJobDataMap().putAll(triggerInstance); try { simpleTriggerFactoryBean.afterPropertiesSet(); } catch (Exception e) { throw new TriggerDefinitionException(e); } return simpleTriggerFactoryBean.getObject(); }
factoryBean.setRepeatInterval(repeatInterval); factoryBean.setRepeatCount(simpleTrigger.repeatCount()); factoryBean.setMisfireInstruction(simpleTrigger.misfireInstruction().getMisfireInstruction());