Springboot 开发之 Quartz 任务调度框架简介
引言
Quartz Scheduler是一个功能丰富的开源作业调度库,它允许开发人员以灵活的方式创建和管理定时任务。以下是对Quartz Scheduler的详细解析:
- 官网地址:https://www.quartz-scheduler.org/
- w3cschool 官方文档:
https://www.w3cschool.cn/quartz_doc/
一、核心概念
Quartz Scheduler的核心概念主要包括三个部分:
- Job:表示被调度的任务,需要实现org.quartz.Job接口中的execute方法。
void execute(JobExecutionContext context)
- JobDetail,用于设置任务的属性,如任务的名称、组名、任务类、任务数据等。
- Trigger:表示触发器,用于定义任务执行的时间规则。Quartz提供了两种主要的触发器类型:
SimpleTrigger
和CronTrigger
。SimpleTrigger
用于在特定时间后开始执行
,并以一定的重复间隔执行。CronTrigger
则基于Cron表达式
,提供了更复杂的时间调度能力。 - Scheduler:调度器,是Quartz框架的心脏,负责基于Trigger设定的时间来执行Job。它管理着所有的Job和Trigger,确保它们能够按照预定的计划执行。
二、Springboot 集成 quartz
1. 创建一个新的 Spring Boot 项目,添加 Quartz 依赖到 pom.xml 文件中:
<dependencies><!-- 其他依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>
</dependencies>
2. Quartz 配置
在 Spring Boot 应用中配置 Quartz,主要涉及到配置类和任务的创建。
(1)配置类
创建一个配置类,用于配置 Quartz 的相关属性:
@Configuration
public class QuartzConfig {@Beanpublic JobStore jobStore(DataSource dataSource) {JDBCJobStoreFactoryBean factory = new JDBCJobStoreFactoryBean();factory.setDataSource(dataSource);factory.setTablePrefix("QRTZ_");return factory.getObject();}@Beanpublic SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) {SchedulerFactoryBean factory = new SchedulerFactoryBean();factory.setJobStore(jobStore(dataSource));// 可以设置其他属性,如线程池大小等return factory;}// 省略其他配置...
}
(2)任务和触发器
定义一个任务,实现 Job 接口,并创建触发器来触发任务:
@Component
public class MyJob implements Job {@Overridepublic void execute(JobExecutionContext context) {// 任务逻辑System.out.println("执行任务:" + new Date());}
}
创建触发器和作业详情,并注册到调度器:
@Service
public class JobService {@Autowiredprivate Scheduler scheduler;@PostConstructpublic void init() throws SchedulerException {JobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("myJob", "group1").build();Trigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").startNow().withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?")) // 每10秒执行一次.build();scheduler.scheduleJob(jobDetail, trigger);}
}
实战演练
启动 Spring Boot 应用
运行 Spring Boot 应用的主类,应用将启动并初始化 Quartz,开始执行定时任务。
验证任务执行
观察控制台输出,你将看到任务按照预定的计划执行,并打印出执行的时间。
参考文献:
- https://www.cnblogs.com/muxi0407/p/11969119.html