Appearance
Quartz调度工具类
一、简介
- 用于调度 Quartz 任务的工具类。
- 主要提供以下功能:
创建定时任务;修改定时任务;删除定时任务;开始所有任务;结束所有任务等。 - 依赖于 Quartz 库。
xml
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
二、使用方法
- 2.1 添加定时任务
- 默认方法
- 提供4个方法重载,可以根据不同需求添加定时任务。
- 2.2 修改定时任务
- 提供2个方法重载,可以修改定时任务的触发时间、任务名称等。
- 2.3 删除定时任务
- 提供2个方法重载,可以删除指定名称的定时任务。
- 2.4 开始所有任务
- 启动所有定时任务。
- 2.5 结束所有任务
- 停止所有定时任务。
三、使用示例
- 结合 【后台-定时任务】 页面,实现定时任务动态调度,如下图:
使用示例说明
- 查询已保存的定时任务列表
List<ZQuartz> list = quartzService.list();
- 遍历定时任务列表,根据任务状态,开启或关闭定时任务。
java
public void refreshQuartzList() {
try {
System.out.println("========刷新定时任务========");
// 查询数据库中,定时任务列表
List<ZQuartz> list = quartzService.list();
if (list != null) {
for (ZQuartz zQuartz : list) {
if (StringUtils.hasText(zQuartz.getStatus()) && zQuartz.getStatus().equals("1")) {
// 开启--------------------
if (!hasOpenedJobsList.contains(zQuartz.getJobName())) {
// 开启任务
quartzManagerUtils.addJob(zQuartz.getJobName(), (Class<Job>) Class.forName(zQuartz.getJobClass()), zQuartz.getJobTimeCron());
// 开启成功,加入已开启列表
hasOpenedJobsList.add(zQuartz.getJobName());
}
} else {
// 关闭--------------------
if (hasOpenedJobsList.contains(zQuartz.getJobName())) {
// 已开启的,才需要关闭
quartzManagerUtils.removeJob(zQuartz.getJobName());
// 关闭成功,移除列表
hasOpenedJobsList.remove(zQuartz.getJobName());
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}