一、Quartz任务调度
1.1 Quartz
- Quartz是一个定时任务框架,基础核心使用可以参考官网
- Quartz源码:github.com/quartz-sche…
- Quartz官网地址:www.quartz-scheduler.org/documentati…
- 项目源码地址:gitee.com/tianxincoor…
1.2 Scheduler
- Scheduler为quartz中的调度器,Quartz通过调度器来注册、暂停、删除Trigger和JobDetail
- Scheduler拥有SchedulerContext,顾名思义就是上下文,通过SchedulerContext可以获取到触发器和任务的一些信息
1.3 Trigger
- Trigger为触发器,通过cron表达式或日历指定任务执行的周期
- 系统时间走到触发器指定的时间时,触发器就会触发任务的执行
1.4 JobDetail
- Job接口是真正需要执行的任务
- JobDetail核心调度实现了Job类的任务类,Trigger和Scheduler实际用到的都是JobDetail
1.5 Job
- 完成任务的最小实现类,如果需要被定时调度的类都需要实现此接口
二、SpringBoot整合
2.1 环境准备
- 新建SpringBoot项目,SpringBoot基于2.2.0.RELEASE,完整pom如下
- 核心依赖为spring-boot-starter-quartz、
1 | xml复制代码<?xml version="1.0" encoding="UTF-8"?> |
- 配置数据源相关链接
- quartz需要单据的数据库,所以需要单据创建一个库来给quartz使用,此处为quartz_config
- 其他相关配置可以参考官网:官网配置参考
1 | yaml复制代码server: |
- 数据表结构如下,在github中有对应的表结构信息
- 源码地址:表结构
1 | sql复制代码drop database quartz_config; |
- 上述步骤完成后,quartz&SpringBoot整合基础环境完成,完整项目结构如下
2.2 代码示例
新建启动类SpringBootQuartz
1 | java复制代码package com.codecoord.springboot.quartz; |
新建实体类,用于接收基础任务信息
1 | java复制代码package com.codecoord.springboot.quartz.domain; |
新建任务类,用于调度任务
1 | java复制代码package com.codecoord.springboot.quartz.job; |
1 | java复制代码package com.codecoord.springboot.quartz.job; |
新建核心处理类,处理任务的添加、删除、暂停等操作
1 | java复制代码package com.codecoord.springboot.quartz.handler; |
新建controller接口对外提供操作入口
1 | java复制代码package com.codecoord.springboot.quartz.controller; |
三、Quartz测试
- 通过POSTMAN/apiPost等工具添加任务,请求数据都在对应接口上
- 观察对应任务是否有进行执行以及数据库中是否有对应任务,例如下面3张表
1 | sql复制代码use quartz_config; |
本文转载自: 掘金