前言:
1、定时任务技术:
- JDK 的 Timer, 定义多个定时任务,其中某个任务出现异常,当时整个定时任务终止。
- Spring Task , 不支持 持久化与分布式部署,所有任务是单线程执行的
- Quartz,支持持久化多线程执行。
2、Spring Boot 整合Quartz
- Job: 任务。定时执行的具体任务内容
- JobDetail: 任务详情。即与任务相关的其他配置信息
- Trigger: 触发器,主要负责描述任务执行的时间规则
- Scheduler: 调度器。
- 将Job和Trigger整合起来之间的关系: Job:JobDetail->1:N JobDetail:Trigger->1:N Trigger:JobDetail->1:1
3、引入pom文件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
4、创建执行任务,Job (自己的定时任务)
对应代码:
@Slf4j
@DisallowConcurrentExecution
@PersistJobDataAfterExecution
public class MyJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
System.out.println("任务开始执行");
JobDetail jobDetail = context.getJobDetail();
System.out.println("名字" + jobDetail.getKey().getName());
System.out.println("类名--->" + jobDetail.getJobClass