1.Quartz介绍
Quartz是OpenSymphony开源的一个项目,是一个由Java编写的开源作业调度框架。
特点
- 支持分布式高可用,我们需要某个定时任务在多个节点中只有某个节点可以执行时,就需要Quartz来实现,否则使用@Scheduled等方式会造成所有节点都执行一遍。
- 支持持久化,Quartz有专门的数据表来实现定时任务的持久化。
- 支持多任务调度和管理,Quartz可以在数据库中存储多个定时任务进行作业调度,可以实现定时任务的增删改查等管理。
组成
Quartz由三部分组成:
- 任务:JobDetail
- 触发器:Trigger(分为SimpleTrigger和CronTrigger)
- 调度器:Scheduler
2.mysql环境搭建
第一个mysql数据库
1 | css复制代码docker run --name docker-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql |
初始化数据
1 | scss复制代码create database demo; |
说明
1 | 复制代码msyql账号root |
3.代码工程
实验目的:创建一个cron的quartz定时任务,并持久化到数据库
pom.xml
1 | xml复制代码<?xml version="1.0" encoding="UTF-8"?> |
Application.yaml
1 | yaml复制代码server: |
job
打印出当前线程名、当前时间及当前调用次数
1 | java复制代码package com.et.quartz.job; |
Jobinit.java
job初始化,并将相关数据持久化都数据库
1 | java复制代码package com.et.quartz.config; |
DemoApplication.java
1 | typescript复制代码package com.et.quartz; |
以上只是一些关键代码,所有代码请参见下面代码仓库
代码仓库
4.测试
启动Spring Boot应用,发现每10秒运行一次定时任务
1 | sql复制代码Execute quartz "SimpleJob", threadName = "hyhScheduler_Worker-1", the 1th execution, time = "2024-04-23 09:14:23.031" |
查看是否数据库有任务信息
1 | csharp复制代码select * from QRTZ_SIMPLE_TRIGGERS qst |
5.参考引用
本文转载自: 掘金