Skip to content

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();
    }
}