@Bean public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) { SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setDataSource(dataSource); factory.setQuartzProperties(prop); factory.setSchedulerName("MyScheduler"); factory.setStartupDelay(1); factory.setApplicationContextSchedulerContextKey("applicationContextKey"); factory.setOverwriteExistingJobs(true); factory.setAutoStartup(true);
@Bean public SchedulerFactoryBean schedulerFactory(JobFactory jobFactory) { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setApplicationContext(applicationContext); schedulerFactoryBean.setAutoStartup(schedulerProperties.isAutoStartup()); schedulerFactoryBean.setDataSource(dataSource); schedulerFactoryBean.setTransactionManager(platformTransactionManager); schedulerFactoryBean.setOverwriteExistingJobs(schedulerProperties.isOverwriteExistingJobs()); schedulerFactoryBean.setSchedulerFactoryClass(StdSchedulerFactory.class); schedulerFactoryBean.setBeanName(schedulerProperties.getBeanName()); schedulerFactoryBean.setJobFactory(jobFactory); schedulerFactoryBean.setWaitForJobsToCompleteOnShutdown(schedulerProperties.isWaitOnShutdown()); schedulerFactoryBean.setQuartzProperties(schedulerProperties.getProperties()); schedulerFactoryBean.setStartupDelay(schedulerProperties.getStartupDelay()); schedulerFactoryBean.setCalendars(calendarMap); schedulerFactoryBean.setSchedulerListeners(schedulerListeners); return schedulerFactoryBean; }
@Bean(initMethod = "start", destroyMethod = "destroy") public XxlJobDynamicScheduler getXxlJobDynamicScheduler(SchedulerFactoryBean schedulerFactory){ Scheduler scheduler = schedulerFactory.getScheduler(); XxlJobDynamicScheduler xxlJobDynamicScheduler = new XxlJobDynamicScheduler(); xxlJobDynamicScheduler.setScheduler(scheduler); return xxlJobDynamicScheduler; }
@Bean public SchedulerFactoryBean getSchedulerFactoryBean(DataSource dataSource){ SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean(); schedulerFactory.setDataSource(dataSource); schedulerFactory.setAutoStartup(true); // 自动启动 schedulerFactory.setStartupDelay(20); // 延时启动,应用启动成功后在启动 schedulerFactory.setOverwriteExistingJobs(true); // 覆盖DB中JOB:true、以数据库中已经存在的为准:false schedulerFactory.setApplicationContextSchedulerContextKey("applicationContext"); schedulerFactory.setConfigLocation(new ClassPathResource("quartz.properties")); return schedulerFactory; }
@Bean public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource, JobFactory jobFactory) { SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setOverwriteExistingJobs(true); factory.setDataSource(dataSource); factory.setJobFactory(jobFactory); factory.setQuartzProperties(quartzConf); return factory; }
@Bean public Scheduler schedulerFactoryBean(DataSource dataSource, JobFactory jobFactory, @Qualifier("sampleJobTrigger") Trigger sampleJobTrigger) throws Exception { SchedulerFactoryBean factory = new SchedulerFactoryBean(); // this allows to update triggers in DB when updating settings in config file: factory.setOverwriteExistingJobs(true); factory.setDataSource(dataSource); factory.setJobFactory(jobFactory); factory.setQuartzProperties(quartzProperties()); factory.afterPropertiesSet(); Scheduler scheduler = factory.getScheduler(); scheduler.setJobFactory(jobFactory); scheduler.scheduleJob((JobDetail) sampleJobTrigger.getJobDataMap().get("jobDetail"), sampleJobTrigger); scheduler.start(); return scheduler; }
public SchedulerFactoryBean quartzScheduler() throws Exception SchedulerFactoryBean quartzScheduler = new SchedulerFactoryBean(); quartzScheduler.setJobFactory(jobFactory); quartzScheduler.setSchedulerName("herdScheduler"); quartzScheduler.setDataSource(herdDataSource); quartzScheduler.setTransactionManager(herdTransactionManager); quartzScheduler.setQuartzProperties(quartzProperties); quartzScheduler.setOverwriteExistingJobs(true); quartzScheduler.setJobDetails(jobDetails.toArray(new JobDetail[jobDetails.size()])); quartzScheduler.setTriggers(triggers.toArray(new CronTrigger[triggers.size()]));
LOG.info("Create scheduler {}.", schedulerName); SchedulerFactoryBean result = new SchedulerFactoryBean(); result.setJobFactory(jobFactory); if (dataSource != null) { result.setDataSource(dataSource); result.setQuartzProperties(quartzConfProperties); result.setTaskExecutor(taskExecutor); result.setAutoStartup(false); result.setSchedulerName(schedulerName); result.setWaitForJobsToCompleteOnShutdown(true); result.setOverwriteExistingJobs(true); result.setTriggers(triggers.toArray(new Trigger[triggers.size()])); ctx.getAutowireCapableBeanFactory().initializeBean(result, schedulerName + "_FACTORY"); return result.getObject(); } catch (Exception e) { throw new IllegalStateException("Error in creating scheduler. Error: " + e.getMessage());
factory.setApplicationContext(applicationContext); factory.setJobFactory(jobFactory); factory.setDataSource(getDataSource(applicationContext, persistenceSettings)); if (persistenceSettings.isUsePlatformTxManager()) { PlatformTransactionManager txManager = getTransactionManager(applicationContext, persistenceSettings.getPlatformTxManagerBeanName()); if (null != txManager) { factory.setTransactionManager(txManager); factory.setSchedulerName(factorySettings.getSchedulerName()); } else { LOGGER.debug("no SchedulerName configured, using bean name: " + QUARTZ_SCHEDULER_FACTORY_BEAN_NAME); factory.setPhase(factorySettings.getPhase()); factory.setStartupDelay(factorySettings.getStartupDelay()); factory.setAutoStartup(factorySettings.isAutoStartup()); factory.setWaitForJobsToCompleteOnShutdown(factorySettings.isWaitForJobsToCompleteOnShutdown()); factory.setOverwriteExistingJobs(factorySettings.isOverwriteExistingJobs()); factory.setExposeSchedulerInRepository(factorySettings.isExposeSchedulerInRepository()); factory.setQuartzProperties(quartzProperties); factory.setGlobalJobListeners(jobListeners.toArray(new JobListener[]{})); factory.setGlobalTriggerListeners(triggerListeners.toArray(new TriggerListener[]{})); factory.setSchedulerListeners(schedulerListeners.toArray(new SchedulerListener[]{})); factory.setTriggers(triggers.toArray(new Trigger[triggers.size()]));
@Bean public SchedulerFactoryBean init(){ SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setDataSource(dataSource); schedulerFactoryBean.setTransactionManager(platformTransactionManager); schedulerFactoryBean.setQuartzProperties(externalPathConfig.quartzCfg()); schedulerFactoryBean.setAutoStartup(true); // 覆盖已存在定时任务 schedulerFactoryBean.setOverwriteExistingJobs(true); schedulerFactoryBean.setWaitForJobsToCompleteOnShutdown(false); schedulerFactoryBean.setJobFactory(autowiringQuartzJobFactory); return schedulerFactoryBean; }
@Bean(name = "schedulerFactoryBean") public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource, JobFactory jobFactory) throws Exception { SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setDataSource(dataSource); factory.setJobFactory(jobFactory); factory.setQuartzProperties(quartzProperties()); factory.afterPropertiesSet(); factory.setStartupDelay(10); factory.setAutoStartup(true); return factory; }
@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(); }
@Configuration @EnableWebMvc @EnableTransactionManagement @ComponentScan("com.myapp") public class WebAppConfig extends WebMvcConfigurerAdapter { @Autowired private DataSource dataSource; @Autowired private ApplicationContext applicationContext; @Bean public SchedulerFactoryBean configureScheduler() { SchedulerFactoryBean f = new SchedulerFactoryBean(); f.setDataSource(dataSource); f.setJobFactory(new SpringBeanJobFactory()); f.setAutoStartup(false); Properties properties = new Properties(); properties.setProperty("org.quartz.threadPool.threadCount", "3"); properties.setProperty("org.quartz.jobStore.useProperties", "false"); properties.setProperty("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate"); f.setQuartzProperties(properties); f.setApplicationContext(applicationContext); f.setApplicationContextSchedulerContextKey("applicationContext"); return f; } }
@Bean public Scheduler quartzScheduler(ApplicationContext context) throws Exception { SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setApplicationContext(context); factory.setExposeSchedulerInRepository(true); factory.setApplicationContextSchedulerContextKey(APPLICATION_CONTEXT_KEY); factory.setJobFactory(glassJobFactory); Properties properties = new Properties(); properties.setProperty("org.quartz.scheduler.skipUpdateCheck","true"); properties.setProperty("org.quartz.threadPool.class", SimpleThreadPool.class.getName()); properties.setProperty("org.quartz.threadPool.threadCount", "15"); properties.setProperty("org.quartz.threadPool.threadPriority", "4"); if (configuration().isInMemory()) { properties.setProperty("org.quartz.jobStore.class", RAMJobStore.class.getName()); } else { factory.setDataSource(dataSource()); properties.setProperty("org.quartz.jobStore.tablePrefix", configuration().getTablePrefix()); properties.setProperty("org.quartz.jobStore.isClustered", "false"); properties.setProperty("org.quartz.jobStore.driverDelegateClass", configuration().getDriverDelegateClass()); } factory.setQuartzProperties(properties); factory.afterPropertiesSet(); Scheduler scheduler = factory.getObject(); scheduler.getListenerManager().addJobListener(glassJobListener); scheduler.getListenerManager().addSchedulerListener(glassSchedulerListener); scheduler.start(); return scheduler; }
/** * Defines a clustered Quartz Scheduler configured by properties from * {@link #acBackendProperties}. * * @return Quart scheduler */ @Bean public SchedulerFactoryBean schedulerFactory() { SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean(); schedulerFactory.setAutoStartup(true); schedulerFactory.setDataSource(dataSource); schedulerFactory.setWaitForJobsToCompleteOnShutdown(true); schedulerFactory.setOverwriteExistingJobs(true); schedulerFactory.setSchedulerName("LogsnifferScheduler"); Properties quartzProperties = new Properties(logSnifferProperties); quartzProperties.setProperty("org.quartz.scheduler.instanceIdGenerator.class", SafeSimpleInstanceIdGenerator.class.getName()); schedulerFactory.setQuartzProperties(quartzProperties); return schedulerFactory; }
/** * create scheduler */ @Bean public SchedulerFactoryBean schedulerFactoryBean() throws IOException { SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setOverwriteExistingJobs(true); factory.setDataSource(dataSource); factory.setQuartzProperties(quartzProperties()); //Register listeners to get notification on Trigger misfire etc factory.setGlobalTriggerListeners(triggerListner); factory.setGlobalJobListeners(jobsListener); AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory(); jobFactory.setApplicationContext(applicationContext); factory.setJobFactory(jobFactory); return factory; }
@ConditionalOnExpression("${spring.quartz.enabled}") @Bean public SchedulerFactoryBean getSchedulerFactoryBean() { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setOverwriteExistingJobs(true); //QuartzScheduler延时启动2分钟,应用启动完后QuartzScheduler再启动。在任务Recovery的情况下,预留足够的时间给spring创建bean实例。 schedulerFactoryBean.setStartupDelay(60); schedulerFactoryBean.setAutoStartup(true); schedulerFactoryBean.setApplicationContextSchedulerContextKey("applicationContext"); schedulerFactoryBean.setQuartzProperties(quartzProperties()); return schedulerFactoryBean; }
@PostConstruct public void init() { schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setQuartzProperties(schedulerProperties); schedulerFactoryBean.setWaitForJobsToCompleteOnShutdown(getBooleanWithDefault(schedulerProperties.getProperty("scheduler.waitForJobsToCompleteOnShutdown"), true)); schedulerFactoryBean.setApplicationContextSchedulerContextKey("applicationContext"); schedulerFactoryBean.setApplicationContext(applicationContext); try { schedulerFactoryBean.afterPropertiesSet(); schedulerFactoryBean.getScheduler().start(); } catch (Exception e) { log.error("Failed to instantiate scheduler with configuration from quartz.properties"); throw new SchedulerInstantiationException(e); } }
@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; }
@Bean(name = "scheduler") public SchedulerFactoryBean schedulerFactory() { SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean(); schedulerFactory.setDataSource(dataSource); schedulerFactory.setAutoStartup(true); schedulerFactory.setGlobalJobListeners(globalJobListeners); schedulerFactory.setSchedulerContextAsMap(contextMap()); schedulerFactory.setQuartzProperties(schedulerProperties()); return schedulerFactory; }