最近在工作中需要创建一些定时任务来处理业务,用到了定时调度工具-Quartz。于是班长我决定先行学习一番,并记录一下。
目录
1 快速开发一个定时任务
2 Quartz任务启动流程分析
2.1 SpringBoot是如何加载启动Quartz的?
2.2 如何创建Schedule
2.3 如何启动调度任务
对于新接触的工具框架,当然是先搭建一个简单的Demo跑起来啦。
由于我们现在一般都已经默认使用SpringBoot搭建我们的项目了,且Quartz已经成为了SpringBoot的默认定时调度框架,所以在SpringBoot中使用Quartz搭建定时任务就比较简单啦。
1. 快速开发一个定时任务
1.1 在SpringBoot项目中,引入Maven依赖
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-quartzartifactId>dependency>
1.2 创建一个任务类Task
// Task 就是我们要定时执行的具体任务,通过继承 QuartzJobBean 重写 executeInternal 方法实现public class Task extends QuartzJobBean {
@Override protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("MyTask: " + new Date()); }}
1.3 创建QuartzConfig配置类
@Configurationpublic class QuartzConfig {
/** * 任务描述类:将一个具体任务(MyTask)加进来 * @return */ @Bean public JobDetail jobDetail() {
return JobBuilder.newJob(MyTask.class) .withIdentity("MyTask-JobDetail") .storeDurably().build(); } /** * 任务触发规则类:你想对哪个任务,怎样触发(比如间隔多久触发一次) * * @return */ @Bean public Trigger trigger() {
//1秒执行一次 SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(1) .repeatForever(); return TriggerBuilder.newTrigger() .forJob(jobDetail()) .withIdentity("MyTask-Trigger") .withSchedule(scheduleBuilder) .build(); }}
然后你只要运行SpringBoot项目,不用任何其他的配置,就会有个定时任