# job **Repository Path**: hhf002/job ## Basic Information - **Project Name**: job - **Description**: 简单定时任务管理系统,任务调度用数据库维护,无需重启服务即可修改任务执行频率(cron表达式)和是否可执行状态,数据库修改后调用refresh接口刷新任务配置生效 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 16 - **Forks**: 10 - **Created**: 2022-01-13 - **Last Updated**: 2024-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 简单定时任务管理系统 >任务调度用数据库维护,无需重启服务即可修改任务执行频率(cron表达式)和是否可执行状态,数据库修改后调用refresh接口刷新任务配置生效 #### 实现方式 通过实现SpringBoot提供的org.springframework.scheduling.annotation.SchedulingConfigurer接口,动态控制调度任务执行。 具体实现见com.hhf.job.config.BaseJobConfig #### 特点 * cron表达式动态维护,执行状态动态更改,不重启服务,维护方便 * 任务执行以方法为单位 * 定时任务实现类方法不受接口、虚类限制,无需依赖其它父类即可被调度(参考com.hhf.job.service.TestTask下两个可定时执行的方法) * 记录执行日志以及定时任务执行错误信息会记录到base_job_log表中 * 核心功能只有一个BaseJobConfig类,核心部分只依赖SpringBoot环境,很方便嵌入SpringBoot环境中 * 支持集群部署,多节点需共用一个MySQL数据库 #### 运行环境 MySQL、JDK8+ #### 开发环境 IDEA maven #### 环境部署 执行db/job.sql数据库文件,配置application.yml数据库连接,启动服务即可。 如果直接修改了数据库的定时任务配置,可浏览器直接访问http://localhost:8080/task/refresh GET接口让配置动态生效。 已开发了一个简单的定时任务配置管理UI(见*UI管理页面*),使用此页面配置定时任务后可即时生效。 #### 集群环境配置 job.cluster.enable=true 即开启了集群配置。 job.cluster.serviceUrl yml支持列表多节点配置 ```yml job: cluster: enable: true serviceUrl: - http://localhost:8080/task/refresh - http://localhost:8081/task/refresh - http://localhost:8082/task/refresh ``` #### 库表 * base_job:配置定时任务配置信息,包括任务脚本类、方法、方法参数(多个参数用逗号隔开,参数用String类型接收)、执行cron表达式、开关状态,class_name维护类全路径 (也可以简单修改下com.hhf.job.config.BaseJobConfig.execTask方法SpringBean获取方式,直接维护spring默认的beanId即可) * base_job_log:定时任务执行日志 #### 任务测试类方法 com.hhf.job.service.TestTask下有几个测试方法,每个方法都可以单独调度管理 #### UI管理页面 url: http://localhost:8080 ![UI Image](ui.png) #### 参考 > 注:核心逻辑参考了以下文章,但具体实现有改动,让服务更像一个独立产品,任务更灵活更方便维护 * [主要参考文章](https://blog.csdn.net/qq_39389954/article/details/109053740?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&utm_relevant_index=2) * [开始是这篇,但缺点是每次维护配置后需要重启生效](https://blog.csdn.net/xcc_2269861428/article/details/99996185)