SpringBoot之Quartz基础
思考集结处 2020-06-07 Quartz
SpringBoot之Quartz基础
# SpringBoot之Quartz基础
前言:由于我们本项目选用的Springboot来整合Quartz,官方给我们提供了启动器所以很简单。在以前的版本我们想要使用Quartz需要引入的依赖如下:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.3</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
按以上的方式来使用Quartz的话,或需要我们创建很多的配置类:
Job
的工厂类等。 但是现在我们有了官方的启动器,依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
1
2
3
4
2
3
4
此时我们不需要配置很多配置类,只需要在我们的
application.yaml
文件中配置必要的信息就ok了。
# 创建springboot项目,并加入所需依赖
# 加入数据库依赖
<!--mysql驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<!--mybatis-plus 快速开发-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 配置基本配置
spring:
quartz:
auto-startup: true
properties:
org:
quartz:
scheduler:
instanceName: clusteredScheduler
instanceId: AUTO
jobStore:
class: org.quartz.impl.jdbcjobstore.JobStoreCMT
driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
tablePrefix: QRTZ_
isClustered: true
clusterCheckinInterval: 10000
useProperties: false
threadPool:
class: org.quartz.simpl.SimpleThreadPool
threadCount: 20
threadPriority: 5
threadsInheritContextClassLoaderOfInitializingThread: true
job-store-type: jdbc
wait-for-jobs-to-complete-on-shutdown: true
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/quartz?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC&allowPublicKeyRetrieval=true
username: root
password: root
initialSize: 20
minIdle: 5
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 30000
testWhileIdle: true
filters: stat,wall,sl4j
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# quartz涉及表说明
涉及表说明
qrtz_calendars :存储quartz的calendar日历信息.
qrtz_cron_triggers :存储cron trigger,包括cron表达式和时区信息。
qrtz_fired_triggers :存储与已触发的trigger相关的状态信息,以及相联job的执行信息
qrtz_job_details :存储每一个已配置的job的详细信息
qrtz_locks :存储程序的非观锁的信息(假如使用了悲观锁)
qrtz_paused_trigger_grps :存储已暂停的trigger组的信息
qrtz_scheduler_state :存储少量的有关 scheduler的状态信息,和别的 scheduler 实例
qrtz_simple_triggers :存储简单的 trigger,包括重复次数,间隔,以及已触的次数
qrtz_simprop_triggers
qrtz_triggers :存储已配置的 trigger的信息
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
表属性说明
qrtz_calendars表
字段中文名 | 字段英文名 | 数据类型 |
---|---|---|
计划名称 | SCHED_NAME | VARCHAR2(120) |
触发器名称 | CALENDAR_NAME | VARCHAR2(200) |
日历 | CALENDA | BLO |
qrtz_cron_triggers表
字段中文名 | 字段英文名 | 数据类型 |
---|---|---|
计划名称 | SCHED_NAME | VARCHAR2(120) |
定时任务类名 | TRIGGER_NAME | VARCHAR2(200) |
任务分类 | TRIGGER_GROUP | VARCHAR2(200) |
cron表达式 | CRON_EXPRESSION | VARCHAR2(120) |
时间区域 | TIME_ZONE_I | VARCHAR2(80 ) |
qrtz_fired_triggers表
字段中文名 | 字段英文名 | 数据类型 |
---|---|---|
计划名称 | SCHED_NAME | VARCHAR2(120) |
组标识 | ENTRY_ID | VARCHAR2(95) |
触发器名称 | TRIGGER_NAME | VARCHAR2(200) |
触发器组 | TRIGGER_GROUP | VARCHAR2(200) |
当前实例的名称 | INSTANCE_NAME | VARCHAR2(200) |
当前执行时间 | FIRED_TIME | NUMBER(13) |
计划时间 | SCHED_TIME | NUMBER(13) |
权重 | PRIORITY | NUMBER |
状态 | STATE | VARCHAR2(16) |
作业名称 | JOB_NAME | VARCHAR2(200) |
作业组 | JOB_GROUP | VARCHAR2(200) |
是否并行 | IS_NONCONCURRENT | VARCHAR2(1) |
是否要求唤醒 | REQUESTS_RECOVERY | VARCHAR2(1) |
qrtz_job_details表
字段中文名 | 字段英文名 | 数据类型 |
---|---|---|
调度名称 | SCHED_NAME | VARCHAR2(120) |
job的名字 | JOB_NAME | VARCHAR2(200) |
job的所属组的名 | JOB_GROUP | VARCHAR2(200) |
相关介绍 | DESCRIPTION | VARCHAR2(250) |
job实现类的完全 | JOB_CLASS_NAME | VARCHAR2(250) |
是否持久化 | IS_DURABLE | VARCHAR2(1) |
是否并发 | IS_NONCONCURRENT | VARCHAR2(1) |
是否更新数据 | IS_UPDATE_DATA | VARCHAR2(1) |
是否接受恢复执行 | REQUESTS_RECOVERY | VARCHAR2(1) |
存放持久job对象 | JOB_DATA | BLOB |
qrtz_locks表
字段中文名 | 字段英文名 | 数据类型 |
---|---|---|
计划名称 | SCHED_NAME | VARCHAR2(120) |
锁名 | LOCK_NAM | VARCHAR2(40) |
qrtz_paused_trigger_grps表
字段中文名 | 字段英文名 | 数据类型 |
---|---|---|
计划名称 | SCHED_NAME | VARCHAR2(120) |
触发器组 | TRIGGER_GROUP | VARCHAR2(200) |
qrtz_scheduler_state表
字段中文名 | 字段英文名 | 数据类型 |
---|---|---|
计划名称 | SCHED_NAME | VARCHAR2(120) |
实例名称 | INSTANCE_NAME | VARCHAR2(200) |
最后的检查时间 | LAST_CHECKIN_TIME | NUMBER(13) |
检查间隔 | CHECKIN_INTERVAL | NUMBER(13) |
qrtz_simple_triggers表
字段中文名 | 字段英文名 | 数据类型 |
---|---|---|
计划名称 | SCHED_NAME | VARCHAR2(120) |
触发器名称 | TRIGGER_NAME | VARCHAR2(200) |
触发器组 | TRIGGER_GROUP | VARCHAR2(200) |
重复次数 | REPEAT_COUNT | NUMBER(7) |
触发次数 | REPEAT_INTERVAL | NUMBER(12) |
重复间隔 | TIMES_TRIGGERED | NUMBER(10) |
qrtz_triggers表
字段中文名 | 字段英文名 | 数据类型 |
---|---|---|
计划名称 | SCHED_NAME | VARCHAR2(120) |
触发器名称 | TRIGGER_NAME | VARCHAR2(200) |
触发器组 | TRIGGER_GROUP | VARCHAR2(200) |
作业名称 | JOB_NAME | VARCHAR2(200) |
作业组 | JOB_GROUP | VARCHAR2(200) |
描述 | DESCRIPTION | VARCHAR2(250) |
下次执行时间 | NEXT_FIRE_TIME | NUMBER(13) |
前一次执行时间 | PREV_FIRE_TIME | NUMBER(13) |
优先权 | PRIORITY | NUMBER |
触发器状态 | TRIGGER_STATE | VARCHAR2(16) |
触发器类型 | TRIGGER_TYPE | VARCHAR2(8) |
开始时间 | START_TIME | NUMBER(13) |
结束时间 | END_TIME | NUMBER(13) |
日历名称 | CALENDAR_NAME | VARCHAR2(200) |
失败次数 | MISFIRE_INSTR | NUMBER |
作业数据 | JOB_DATA | BLOB |
# 小结
好啦,小伙伴们,我们今天主要了解了一下,Quartz
的基本知识以及它所涉及到的表,以及如何在项目中使用,
下一篇我们会讨论如何正真的在项目中将它用起来。