package com.iailab.module.model.job.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.quartz.SchedulerFactoryBean; import javax.sql.DataSource; import java.util.Properties; /** * 定时任务é…ç½® * * @author Mark sunlightcs@gmail.com */ @Configuration public class ScheduleConfig { @Bean public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) { SchedulerFactoryBean factory = new SchedulerFactoryBean(); factory.setDataSource(dataSource); //quartzå‚æ•° Properties prop = new Properties(); prop.put("org.quartz.scheduler.instanceName", "IailabModelScheduler"); prop.put("org.quartz.scheduler.instanceId", "AUTO"); //çº¿ç¨‹æ± é…ç½® prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool"); prop.put("org.quartz.threadPool.threadCount", "20"); prop.put("org.quartz.threadPool.threadPriority", "5"); //JobStoreé…ç½® prop.put("org.quartz.jobStore.class", "org.springframework.scheduling.quartz.LocalDataSourceJobStore"); //集群é…ç½® prop.put("org.quartz.jobStore.isClustered", "false"); prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000"); prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1"); prop.put("org.quartz.jobStore.misfireThreshold", "12000"); prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_"); prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?"); //PostgreSQLæ•°æ®åº“,需è¦æ‰“å¼€æ¤æ³¨é‡Š //prop.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate"); factory.setQuartzProperties(prop); factory.setSchedulerName("IailabModelScheduler"); //延时å¯åŠ¨ factory.setStartupDelay(30); factory.setApplicationContextSchedulerContextKey("applicationContextKey"); //å¯é€‰ï¼ŒQuartzScheduler å¯åŠ¨æ—¶æ›´æ–°å·±å˜åœ¨çš„Jobï¼Œè¿™æ ·å°±ä¸ç”¨æ¯æ¬¡ä¿®æ”¹targetObjectåŽåˆ 除qrtz_job_details表对应记录了 factory.setOverwriteExistingJobs(true); //设置自动å¯åŠ¨ï¼Œé»˜è®¤ä¸ºtrue factory.setAutoStartup(true); return factory; } }