1、什么是Quartz

quartz是一个功能丰富的开源的任务调用系统,它可以定义很多job并发执行,支持事务和集群

2、可以做什么

定义任务,在任何时刻,或者某一时刻可以做想执行的任务

3、Quartz 三要素:

job 实现 QuartzJobBean ,abstractQuartzJob,任务执行的地方

Scheduler

注意: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;
    }
复制代码

Trigger和JobDetail

常用方法

简单示例