/** * * @return */ public JobDetail build() { jobDetailFactoryBean.afterPropertiesSet(); return jobDetailFactoryBean.getObject(); } }
@Bean(name = "jobWithCronTriggerBean") public JobDetail sampleJob() { return ConfigureQuartz.createJobDetail(this.getClass()).getObject(); }
@Bean(name = "jobWithDITesterBeanTrigger") public CronTriggerFactoryBean sampleJobTrigger(@Qualifier("jobWithDITesterBean") JobDetailFactoryBean jdfb ) { return ConfigureQuartz.createCronTrigger(jdfb.getObject(), frequency); }
@RequestMapping("/schedule") public String schedule() { String scheduled = "Job is Scheduled!!"; try { JobDetailFactoryBean jdfb = ConfigureQuartz.createJobDetail(DynamicJob.class); jdfb.setBeanName("dynamicJobBean"); jdfb.afterPropertiesSet(); SimpleTriggerFactoryBean stfb = ConfigureQuartz.createTrigger(jdfb.getObject(),5000L); stfb.setBeanName("dynamicJobBeanTrigger"); stfb.afterPropertiesSet(); schedFactory.getScheduler().scheduleJob(jdfb.getObject(), stfb.getObject()); } catch (Exception e) { scheduled = "Could not schedule a job. " + e.getMessage(); } return scheduled; }
@Inject @Bean(name = "cleanUpCronTriggerFactoryBean") public CronTriggerFactoryBean cronTriggerFactoryBean(ApplicationConfiguration configuration) { CronTriggerFactoryBean factory = new CronTriggerFactoryBean(); factory.setJobDetail(jobDetailFactoryBean().getObject()); factory.setCronExpression(configuration.getCronExpressionForOldData()); factory.setGroup(TRIGGER_GROUP); factory.setName(CLEAN_UP_TRIGGER_NAME); return factory; }
/** * 매일 새벽 1시에 실행 * * @return */ @Bean public CronTriggerFactoryBean notebookKillKernelTrigger(){ CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean(); triggerFactory.setJobDetail(notebookKillKernelJob().getObject()); triggerFactory.setName("kill-notebook-kernel-trigger"); triggerFactory.setGroup(JOB_GROUP_CLEANER); triggerFactory.setCronExpression("0 0 1 1/1 * ? *"); return triggerFactory; }
/** * 3시간에 한번씩 수행 * * @return */ @Bean public CronTriggerFactoryBean calculatePopularityTrigger(){ CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean(); triggerFactory.setJobDetail(calculatePopularityJob().getObject()); triggerFactory.setName("calculate-popularity-trigger"); triggerFactory.setGroup(JOB_GROUP_DOMAIN); triggerFactory.setCronExpression("0 0 0/3 1/1 * ? *"); return triggerFactory; }
@Bean public SchedulerFactoryBean scheduler() { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setDataSource(dataSource); schedulerFactoryBean.setTransactionManager(transactionManager); schedulerFactoryBean.setJobFactory(jobFactory()); schedulerFactoryBean.setWaitForJobsToCompleteOnShutdown(true); schedulerFactoryBean.setJobDetails(dataSourceCheckJob().getObject(), dataSourceIngestionCheckJob().getObject(), dataSourceSizeCheckJob().getObject(), incrementalJob().getObject(), tempDataSourceCleanJob().getObject(), calculatePopularityJob().getObject(), notebookKillKernelJob().getObject(), tempCSVFileCleanJob().getObject(), timeoutWorkbenchConnectionCloseJob().getObject()); schedulerFactoryBean.setTriggers(dataSourceCheckTrigger().getObject(), dataSourceIngestionCheckTrigger().getObject(), dataSourceSizeCheckTrigger().getObject(), tempDataSourceCleanTrigger().getObject(), calculatePopularityTrigger().getObject(), notebookKillKernelTrigger().getObject(), tempCSVFileCleanTrigger().getObject(), timeoutWorkbenchConnectionCloseTrigger().getObject()); return schedulerFactoryBean; }
/** * Persist the trigger in the Quartz scheduler. */ private VmSchedule persistTrigger(final VmSchedule schedule) throws SchedulerException { // The trigger for the common VM Job will the following convention : // schedule.id-subscription.id final String id = VmJob.format(schedule); final JobDetailImpl object = (JobDetailImpl) vmJobDetailFactoryBean.getObject(); object.getJobDataMap().put("vmServicePlugin", this); final Trigger trigger = TriggerBuilder.newTrigger().withIdentity(id, SCHEDULE_TRIGGER_GROUP) .withSchedule(CronScheduleBuilder.cronSchedule(schedule.getCron()) .inTimeZone(DateUtils.getApplicationTimeZone())) .forJob(object).usingJobData("subscription", schedule.getSubscription().getId()) .usingJobData("operation", schedule.getOperation().name()).usingJobData("schedule", schedule.getId()) .build(); // Add this trigger vmSchedulerFactoryBean.getObject().scheduleJob(trigger); return schedule; }
/** * 10분에 한번씩 데이터 소스 체크 * * @return */ @Bean public CronTriggerFactoryBean tempDataSourceCleanTrigger(){ CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean(); triggerFactory.setJobDetail(tempDataSourceCleanJob().getObject()); triggerFactory.setStartDelay(20000); triggerFactory.setName("temporary-cleaner-trigger"); triggerFactory.setGroup(JOB_GROUP_CLEANER); triggerFactory.setCronExpression("0 0/10 * 1/1 * ? *"); return triggerFactory; }
/** * 5분에 한번식 데이터 소스 체크 * * @return */ @Bean public CronTriggerFactoryBean dataSourceCheckTrigger(){ CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean(); triggerFactory.setJobDetail(dataSourceCheckJob().getObject()); triggerFactory.setStartDelay(10000); triggerFactory.setName("check-datasource-trigger"); triggerFactory.setGroup(JOB_GROUP_CHECK); triggerFactory.setCronExpression("0 0/5 * 1/1 * ? *"); return triggerFactory; }
/** * 10분에 한번씩 데이터 소스 체크 * * @return */ @Bean public CronTriggerFactoryBean dataSourceSizeCheckTrigger(){ CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean(); triggerFactory.setJobDetail(dataSourceSizeCheckJob().getObject()); triggerFactory.setStartDelay(20000); triggerFactory.setName("check-datasource-size-trigger"); triggerFactory.setGroup(JOB_GROUP_CHECK); triggerFactory.setCronExpression("0 0/10 * 1/1 * ? *"); return triggerFactory; }
/** * 매 30분마다 실행 * * @return */ @Bean public CronTriggerFactoryBean timeoutWorkbenchConnectionCloseTrigger(){ CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean(); triggerFactory.setJobDetail(timeoutWorkbenchConnectionCloseJob().getObject()); triggerFactory.setStartDelay(1000); triggerFactory.setName("timeout-connection-close-trigger"); triggerFactory.setGroup(JOB_GROUP_DOMAIN); triggerFactory.setCronExpression("0 0/30 * 1/1 * ? *"); return triggerFactory; }
/** * 1분에 한번씩 데이터 적재 작업 체크 * * @return */ @Bean public CronTriggerFactoryBean dataSourceIngestionCheckTrigger(){ CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean(); triggerFactory.setJobDetail(dataSourceIngestionCheckJob().getObject()); triggerFactory.setStartDelay(10000); triggerFactory.setName("check-ingestion-task"); triggerFactory.setGroup(JOB_GROUP_CHECK); triggerFactory.setCronExpression("0 0/1 * 1/1 * ? *"); return triggerFactory; }
/** * 매일 새벽 2시에 실행 * * @return */ @Bean public CronTriggerFactoryBean tempCSVFileCleanTrigger(){ CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean(); triggerFactory.setJobDetail(tempCSVFileCleanJob().getObject()); triggerFactory.setStartDelay(20000); triggerFactory.setName("temporary-csv-cleaner-trigger"); triggerFactory.setGroup(JOB_GROUP_CLEANER); triggerFactory.setCronExpression("0 0 2 1/1 * ? *"); return triggerFactory; }
@Override public JobDetail buildJobDetail(JobDefinition rawJobDefinition) { JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean(); ExecuteRunnableJobDefinition jobDefinition = (ExecuteRunnableJobDefinition) rawJobDefinition; jobDetailFactory.setName(jobDefinition.getScheduledJobName()); jobDetailFactory.setJobClass(RunnableJobLauncher.class); jobDetailFactory.setDescription(jobDefinition.getDescription()); Map<String, Object> jobDataMap = new HashMap<String, Object>(); RunnableDefinition runnableDefinition = runnableRepository.fetchDefinitionById(jobDefinition.getRunnableId()); jobDataMap.put(RUNNABLE_CONTEXT_PATH, runnableDefinition.getContextPath()); jobDataMap.put(JOB_DEFINITION_INSTANCE, convertToList(jobDefinition)); jobDetailFactory.setJobDataAsMap(jobDataMap); jobDetailFactory.afterPropertiesSet(); return jobDetailFactory.getObject(); }
public SchedulerFactoryBean build() throws Exception { SchedulerFactoryBean bean = new SchedulerFactoryBean(); PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean(); propertiesFactoryBean.setLocation(new ClassPathResource(config)); propertiesFactoryBean.afterPropertiesSet(); Properties props = propertiesFactoryBean.getObject(); List<Trigger> triggers = Lists.newArrayList(); List<JobModel> jobList = getJobs(props); for (JobModel job : jobList) { if (!job.isEnable()) { continue; } JobDetailFactoryBean detail = createJobDetail(job.getName(), Class.forName(job.getJob())); CronTriggerFactoryBean trigger = createCronTrigger(job.getName(), detail.getObject(), job.getCorn()); CronTrigger t = trigger.getObject(); triggers.add(t); } bean.setTriggers(triggers.toArray(new Trigger[0])); //bean.afterPropertiesSet(); return bean; }
/** * 根据指定的参数,创建JobDetail * @param clazz * @param name * @param groupName * @param description * @return */ public static JobDetail createJobDetail(Class clazz, String name, String groupName, String description) { jobDetailFactory.setJobClass(clazz); jobDetailFactory.setName(name); jobDetailFactory.setGroup(groupName); jobDetailFactory.setDescription(description); jobDetailFactory.setDurability(true); jobDetailFactory.afterPropertiesSet(); return jobDetailFactory.getObject(); }
public CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetailFactory, Long id, String cronExpression, Date startDateTime, Date enddatetime) throws ParseException { CronTriggerFactoryBean cronTriggerFactory = new CronTriggerFactoryBean(); cronTriggerFactory.setJobDetail(jobDetailFactory.getObject()); cronTriggerFactory.setStartDelay(3000); cronTriggerFactory.setName(triggerName + "_" + id); cronTriggerFactory.setGroup(groupName); logger.debug(EELFLoggerDelegate.debugLogger, triggerName + " Scheduled: " + cronExpression); cronTriggerFactory.setCronExpression( cronExpression); //"0 * * * * ? *" cronTriggerFactory.afterPropertiesSet(); final CronTriggerImpl cronTrigger = (CronTriggerImpl) cronTriggerFactory.getObject(); cronTrigger.setStartTime(startDateTime == null ? Calendar.getInstance().getTime() : startDateTime); cronTrigger.setEndTime(enddatetime); Date fireAgainTime = cronTrigger.getFireTimeAfter(cronTrigger.getStartTime()); if (fireAgainTime == null) throw new IllegalArgumentException("Cron not added as it may not fire again " + " Expr: " + cronExpression + " End Time: " + cronTrigger.getEndTime()); return cronTriggerFactory; }
/** * Create Quartz Job. * * @param jobClass Class whose executeInternal() method needs to be called. * @param isDurable Job needs to be persisted even after completion. if true, job will be persisted, not otherwise. * @param context Spring application context. * @param jobName Job name. * @param jobGroup Job group. * * @return JobDetail object */ protected static JobDetail createJob(Class<? extends QuartzJobBean> jobClass, boolean isDurable, ApplicationContext context, String jobName, String jobGroup){ JobDetailFactoryBean factoryBean = new JobDetailFactoryBean(); factoryBean.setJobClass(jobClass); factoryBean.setDurability(isDurable); factoryBean.setApplicationContext(context); factoryBean.setName(jobName); factoryBean.setGroup(jobGroup); // set job data map JobDataMap jobDataMap = new JobDataMap(); jobDataMap.put("myKey", "myValue"); factoryBean.setJobDataMap(jobDataMap); factoryBean.afterPropertiesSet(); return factoryBean.getObject(); }