# boot-quartz **Repository Path**: java-tools/boot-quartz ## Basic Information - **Project Name**: boot-quartz - **Description**: 使用Quartz来简单实现动态增删启停定时任务功能 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-06-11 - **Last Updated**: 2025-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目说明 定时任务常用的实现方式有三种:1、JDK的Timer类;2、Quartz;3、Spring Task。使用最多的便是xml配置的方式,这种方式最简单,无代码侵入,也比较好理解。 但当你想要新增一个任务,暂停一个任务或者修改某个任务的触发时间时,却要先去关停应用,然后改XML配置,最后再重新启动,是不是特别麻烦。那可不可以不停机就能操作定时任务呢? 此项目案例使用Quartz来简单实现动态增删启停定时任务功能的方法。 实现步骤: (1)启动项目时启动任务监听器去初始化定时任务 (2)读取数据库,将运行状态的任务job和trigger加载到scheduler调度器中 (3)根据任务调度运行job类 quartz支持持久化,默认关闭状态。如果需要持久化,quartz.properties修改jobStore实现类: ``` #持久化到数据库 #org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX #持久化方式配置数据驱动 #org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate #quartz相关数据表前缀名 #org.quartz.jobStore.tablePrefix = QRTZ_ #集群模式 #org.quartz.jobStore.isClustered = true ``` 同时QuartzConfig取消`schedulerFactoryBean.setDataSource(dataSource);`注释 需要执行quartz.sql创建quartz需要的表。 数据库说明 | 数据库 | 说明 | | --- | --- | | qrtz_blob_triggers | blog类型存储trigger | | qrtz_calendars | 以blog类型存储Calendar信息 | | qrtz_cron_triggers | 存储cron trigger信息 | | qrtz_fired_triggers | 存储已触发的trigger相关信息 | | qrtz_job_details | 存储每一个已配置的job的详细信息 | | qrtz_locks | 存储悲观锁的信息 | | qrtz_paused_trigger_grps | 存储已暂停的trigger组信息 | | qrtz_scheduler_state | 存储scheduler状态信息 | | qrtz_simple_triggers | 存储简单的trigger信息 | | qrtz_simprop_triggers | 存储其他几种trigger信息 | | qrtz_triggers | 存储已配置的trigger信息 | # 运行效果 任务列表: ![任务列表](doc/run01.png) 编辑任务: ![编辑任务](doc/run02.png) 删除任务: ![删除任务](doc/run03.png) 运行任务: ![运行任务](doc/run04.png)