/**
- 定时器配置
*/
@EnableScheduling
@Configuration
public class SchedulerConfig {
public static final String TARGET_METHOD = "execute";
/**
* 康明斯UDS定时表达式
*/
@Value("${spring.quartz.auto-startup}")
private boolean autoStartup;
/**
* 康明斯UDS定时表达式
*/
@Value("${spring.quartz.trigger.kms-uds-cron-expression}")
private String kmsUdsCronExpression;
/**
* 康明斯非紧急标定定时表达式
*/
@Value("${spring.quartz.trigger.kms-non-urgent-cal-cron-expression}")
private String kmsNonUrgentCalCronExpression;
/**
* 康明斯紧急标定定时表达式
*/
@Value("${spring.quartz.trigger.kms-urgent-cal-cron-expression}")
private String kmsUrgentCalCronExpression;
/**
* 定时总控器
* @author albert.ding
* @param cronTrigger
* @param dataSource
* @return
*/
@Bean("kmsScheduler")
public SchedulerFactoryBean schedulerFactory(@Qualifier("quartzDataSource")DataSource dataSource,
@Qualifier("kmsUdsCronTrigger")CronTrigger kmsUdsCronTrigger,
@Qualifier("kmsNonUrgentCalCronTrigger")CronTrigger kmsNonUrgentCalCronTrigger,
@Qualifier("kmsUrgentCalCronTrigger")CronTrigger kmsUrgentCalCronTrigger){
SchedulerFactoryBean bean = new SchedulerFactoryBean();
bean.setAutoStartup(autoStartup);
bean.setStartupDelay(2);
bean.setWaitForJobsToCompleteOnShutdown(true);
//bean.setTriggers(kmsUdsCronTrigger, kmsNonUrgentCalCronTrigger, kmsUrgentCalCronTrigger);
bean.setTriggers(kmsUdsCronTrigger);
bean.setApplicationContextSchedulerContextKey("applicationContext");
bean.setDataSource(dataSource);
return bean;
}
/**
* 康明斯紧急标定 CronTrigger
* @author albert.ding
* @param jobDetail
* @return
*/
@Bean("kmsUrgentCalCronTrigger")
public CronTriggerFactoryBean kmsUrgentCalCronTrigger(@Qualifier("kmsUrgentCalJobDetail") JobDetail jobDetail){
CronTriggerFactoryBean bean = new CronTriggerFactoryBean();
bean.setJobDetail(jobDetail);
bean.setCronExpression(kmsUrgentCalCronExpression);
return bean;
}
/**
* 康明斯紧急标定 JobDetail
* @author albert.ding
* @param task
* @return
*/
@Bean("kmsUrgentCalJobDetail")
public MethodInvokingJobDetailFactoryBean kmsUrgentCalJobDetail(@Qualifier("kmsUrgentCalJob") KmsUrgentCalJob job){
MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean();
bean.setTargetObject (job);
bean.setTargetMethod (TARGET_METHOD);
bean.setConcurrent (false);
return bean;
}
/**
* 康明斯非紧急标定 CronTrigger
* @author albert.ding
* @param jobDetail
* @return
*/
@Bean("kmsNonUrgentCalCronTrigger")
public CronTriggerFactoryBean kmsNonUrgentCalCronTrigger(@Qualifier("kmsNonUrgentCalJobDetail") JobDetail jobDetail){
CronTriggerFactoryBean bean = new CronTriggerFactoryBean();
bean.setJobDetail(jobDetail);
bean.setCronExpression(kmsNonUrgentCalCronExpression);
return bean;
}
/**
* 康明斯非紧急标定 JobDetail
* @author albert.ding
* @param task
* @return
*/
@Bean("kmsNonUrgentCalJobDetail")
public MethodInvokingJobDetailFactoryBean kmsNonUrgentCalJobDetail(@Qualifier("kmsNonUrgentCalJob") KmsNonUrgentCalJob job){
MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean();
bean.setTargetObject (job);
bean.setTargetMethod (TARGET_METHOD);
bean.setConcurrent (false);
return bean;
}
/**
* 康明斯UDS CronTrigger
* @author albert.ding
* @param jobDetail
* @return
*/
@Bean("kmsUdsCronTrigger")
public CronTriggerFactoryBean kmsUdsCronTrigger(@Qualifier("kmsUdsJobDetail") JobDetail jobDetail){
CronTriggerFactoryBean bean = new CronTriggerFactoryBean();
bean.setJobDetail(jobDetail);
bean.setCronExpression(kmsUdsCronExpression);
return bean;
}
/**
* 康明斯UDS JobDetail
* @author albert.ding
* @param task
* @return
*/
@Bean("kmsUdsJobDetail")
public MethodInvokingJobDetailFactoryBean kmsUdsJobDetail(@Qualifier("kmsUdsJob") KmsUdsJob job){
MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean();
bean.setTargetObject (job);
bean.setTargetMethod (TARGET_METHOD);
bean.setConcurrent (false);
return bean;
}
======================================================
quartz配置
quartz:
auto-startup: false
datasource:
myds:
url: jdbc:mysql://192.168.19.111:3306/quartz?useUnicode=true&characterEncoding=utf-8&useSSL=true&allowMultiQueries=true
username: root
password: ‘q#IwJ,c?gB/F’
driver-class-name: com.mysql.jdbc.Driver
job-store-type: jdbc
jdbc:
initialize-schema: never
trigger:
kms-uds-cron-expression: ‘0 0/10 * * * ? *’
kms-non-urgent-cal-cron-expression: ‘0 0/10 * * * ? *’
kms-urgent-cal-cron-expression: ‘0 0/10 * * * ? *’
properties:
org:
quartz:
jobStore:
class: org.quartz.impl.jdbcjobstore.JobStoreTX
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
misfireThreshold: 60000
useProperties: false
tablePrefix: QRTZ_
isClustered: true
clusterCheckinInterval: 15000
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 10
threadPriority: 5
threadsInheritContextClassLoaderOfInitializingThread: true
scheduler:
instanceName: KmsQuartzScheduler
instanceId: AUTO
skipUpdateCheck: true