定时任务框架Quartz
一.什么是Quartz?
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能:
持久性- 就是保持调度定时的状态;
易管理 - 对调度进行有效的管理;
二.Quartz是如何调度工作的呢?
首先来看一下Quartz的组成部分:
调度器:Scheduler
任务:JobDetail
触发器:Trigger,包括SimpleTrigger和CronTrigger
主要分为这三个部分,也就是WHERE - WHAT - WHEN 3W组成的
1.WHERE :Scheduler
什么是Scheduler?
Scheduler任务调度器,是实际执行任务调度的控制器。在spring中通过SchedulerFactoryBean封装起来
Scheduler工厂模式
所有的Scheduler实例应该由SchedulerFactory来创建
初始化SchedulerFactoryBean
@Configuration
public class SchedulerConfig {
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
//quartz参数
Properties prop = new Properties();
prop.put("org.quartz.scheduler.instanceName", "TestScheduler");
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");
factory.setQuartzProperties(prop);
factory.setSchedulerName("TestScheduler");
//延时启动
factory.setStartupDelay(0);
factory.setApplicationContextSchedulerContextKey("applicationContextKey");
//设置自动启动,默认为true
factory.setAutoStartup(true);
return factory;
}
}