# dynamic-scheduler-demo **Repository Path**: hhjiesen/dynamic-scheduler-demo ## Basic Information - **Project Name**: dynamic-scheduler-demo - **Description**: SpringBoot动态定时任务的实现 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-18 - **Last Updated**: 2023-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dynamic-scheduler-demo #### 介绍 SpringBoot动态定时任务的实现,实现定时任务配置数据库持久化 #### 使用示例 ``` import com.ofwiki.demo.scheduler.common.JobHandler; import com.ofwiki.demo.scheduler.common.JobHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Component public class TestJos { private final Logger logger = LoggerFactory.getLogger(TestJos.class); // TODO 1. 项目启动后所有 @JobHandler 注解内容,将自动保存到表 tb_jobs // TODO 2. 使用 @JobHandler 声明方法为JobHandler, 运营管理界面 只能针对JobHandler方法配置执行计划 // TODO 3. 使用帮助类 JobHelper 获取执行参数等信息,及声明任务执行结果, // @JobHandler(value = "testJob1",desc = "定时任务示例1") public void demoHandler1() { // 获取任务参数 String jobParam = JobHelper.getJobParam(); Long jobId = JobHelper.getJobId(); logger.info("定时任务示例1,任务参数:{},jobId:{}", jobParam, jobId); // TODO 可以通过以下方法,标明方法的执行结果,该结果会根据 tb_jobs.logDurable 的配置决定是否持久化至表 tb_job_logs // 成功方法: 默认 handlerCode 为 200 //JobHelper.handleSuccess("{\"data\":\"执行成功\"}"); // 失败方法: 默认 handlerCode 为 200 //JobHelper.handleFail("{\"data\":\"执行失败\"}"); // 自定义指定 handlerCode,handlerMsg JobHelper.handleResult(1000, "执行成功"); } // TODO 通过定时任务触发的方法入参为null, @JobHandler(value = "testJob2",desc = "定时任务示例2") public void demoHandler2(String args) { // TODO 没有调用 JobHelper.handleResult 等方法,则handlerCode默认为200,handlerMsg = null // 获取任务参数 String jobParam = JobHelper.getJobParam(); logger.info("定时任务示例2 方法参数:{},任务参数:{}", args, jobParam); } @JobHandler(value = "testJob3",desc = "定时任务示例3") public void demoHandler3(String args) { // TODO 方法向外抛出异常时,tb_job_logs.exec_status 则为 500 标明任务执行异常 String jobParam = JobHelper.getJobParam(); logger.info("定时任务示例3 方法参数:{},任务参数:{}", args, jobParam); if (jobParam == null) { throw new RuntimeException("jobParam is null"); } } } ```