quartz是一个功能丰富的开源的任务调用系统,它可以定义很多job并发执行,支持事务和集群
定义任务,在任何时刻,或者某一时刻可以做想执行的任务
job 实现 QuartzJobBean ,abstractQuartzJob,任务执行的地方
注意:scheduler是一个接口类,所有的具体实现类都是通过SchedulerFactory工厂类实现,因此是需要配置调度工厂的,由他来调度任务
自定义SchedulerFactory(简单使用Quartz不需要自定义这个(注意)
)
@Beanpublic SchedulerFactoryBeanschedulerFactoryBean(DataSource dataSource)
{
SchedulerFactoryBean factory =newSchedulerFactoryBean();
factory.setDataSource(dataSource);
// quartz参数Properties prop =newProperties();
prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler");
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.quartz.impl.jdbcjobstore.JobStoreTX");
// 集群配置
prop.put("org.quartz.jobStore.isClustered", "true");
prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");
prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1");
prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true");
// sqlserver 启用// prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");
prop.put("org.quartz.jobStore.misfireThreshold", "12000");
prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
factory.setQuartzProperties(prop);
factory.setSchedulerName("RuoyiScheduler");
// 延时启动
factory.setStartupDelay(1);
factory.setApplicationContextSchedulerContextKey("applicationContextKey");
// 可选,QuartzScheduler// 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了
factory.setOverwriteExistingJobs(true);
// 设置自动启动,默认为true
factory.setAutoStartup(true);
return factory;
}
复制代码
常用方法
简单示例