广州新建站,河南做网站找谁,商城网站商家入驻功能,公司查询企业查询在线ApiBoot Quartz ApiBoot内部集成了Quartz#xff0c;提供了数据库方式、内存方式的进行任务的存储#xff0c;其中数据库方式提供了分布式集群任务调度#xff0c;任务自动平滑切换执行节点。 引用ApiBoot Quartz 在pom.xml配置文件内添加#xff0c;如下配置#xff1a; …ApiBoot Quartz ApiBoot内部集成了Quartz提供了数据库方式、内存方式的进行任务的存储其中数据库方式提供了分布式集群任务调度任务自动平滑切换执行节点。 引用ApiBoot Quartz 在pom.xml配置文件内添加如下配置 !--ApiBoot Quartz--
dependencygroupIdorg.minbox.framework/groupIdartifactIdapi-boot-starter-quartz/artifactId
/dependency
复制代码 备注如果使用ApiBoot Quartz的内存方式仅需要添加上面的依赖即可。 相关配置 参数名称是否必填默认值描述api.boot.quartz.job-store-type否memory任务存储源方式默认内存方式api.boot.quartz.scheduler-name否scheduler调度器名称api.boot.quartz.auto-startup否true初始化后是否自动启动调度程序api.boot.quartz.startup-delay否0初始化完成后启动调度程序的延迟。api.boot.quartz.wait-for-jobs-to-complete-on-shutdown否false是否等待正在运行的作业在关闭时完成。api.boot.quartz.overwrite-existing-jobs否false配置的作业是否应覆盖现有的作业定义。api.boot.quartz.properties否Quartz自定义的配置属性具体参考quartz配置api.boot.quartz.jdbc否配置数据库方式的Jdbc相关配置内存方式 ApiBoot Quartz在使用内存方式存储任务时不需要做配置调整。 数据库方式 需要在application.yml配置文件内修改api.boot.quartz.job-store-type参数如下所示 api:boot:quartz:# Jdbc方式job-store-type: jdbc
复制代码Quartz所需表结构 Quartz的数据库方式内部通过DataSource获取数据库连接对象来进行操作数据所操作数据表的表结构是固定的ApiBoot把Quartz所支持的所有表结构都进行了整理访问Quartz支持数据库建表语句列表查看复制执行对应数据库语句即可。 创建任务类 我们只需要让新建类集成QuartzJobBean就可以完成创建一个任务类如下简单示例 /*** 任务定义示例* 与Quartz使用方法一致ApiBoot只是在原生基础上进行扩展不影响原生使用* p* 继承QuartzJobBean抽象类后会在项目启动时会自动加入Spring IOC** author恒宇少年 - 于起宇* p* DateTime2019-03-28 17:26* Bloghttp://blog.yuqiyu.com* WebSitehttp://www.jianshu.com/u/092df3f77bca* Giteehttps://gitee.com/hengboy* GitHubhttps://github.com/hengboy*/
public class DemoJob extends QuartzJobBean {/*** logger instance*/static Logger logger LoggerFactory.getLogger(DemoJob.class);Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {logger.info(定时任务Job Key {}, context.getJobDetail().getKey());logger.info(定时任务执行时所携带的参数{}, JSON.toJSONString(context.getJobDetail().getJobDataMap()));//...处理逻辑}
}
复制代码任务参数 在任务执行时传递参数是必须的ApiBoot Quartz提供了比较方便的传递方式不过最终Quartz会把传递的值都会转换为String类型数据。 任务Key默认值 ApiBoot Quartz的newJob方法所创建的定时任务如果在不传递Job Key参数时会默认使用UUID随机字符串作为Job Key以及Trigger Key。 自定义任务开始时间 任务开始时间可以通过startAtTime方法进行设置在不设置的情况下任务创建完成后会立刻执行。 Cron 表达式任务 创建Cron类型任务如下所示 String jobKey apiBootQuartzService.newJob(ApiBootCronJobWrapper.Context().jobClass(DemoJob.class).cron(0/5 * * * * ?).param(ApiBootJobParamWrapper.wrapper().put(param, 测试)).wrapper());
复制代码Cron 表达式任务由ApiBootCronJobWrapper类进行构建。 上面的DemoJob任务类将会每隔5秒执行一次。 Loop 重复任务 Loop循环任务当在不传递重复执行次数时不进行重复执行仅仅执行一次如下所示 String jobKey apiBootQuartzService.newJob(ApiBootLoopJobWrapper.Context()// 参数.param(ApiBootJobParamWrapper.wrapper().put(userName, 恒宇少年).put(userAge, 24))// 每次循环的间隔时间单位毫秒.loopIntervalTime(2000)// 循环次数.repeatTimes(5)// 开始时间10秒后执行.startAtTime(new Date(System.currentTimeMillis() 10000))// 任务类.jobClass(DemoJob.class).wrapper());
复制代码Loop 任务由ApiBootLoopJobWrapper类进行构建。 上面的定时任务将会重复执行5次连上自身执行的一次也就是会执行6次每次的间隔时间为2秒在任务创建10秒后进行执行。 Once 一次性任务 Once一次性任务任务执行一次会就会被自动释放如下所示
Map paramMap new HashMap(1);
paramMap.put(paramKey, 参数值);String jobKey apiBootQuartzService.newJob(ApiBootOnceJobWrapper.Context().jobClass(DemoJob.class)// 参数.param(ApiBootJobParamWrapper.wrapper().put(mapJson, JSON.toJSONString(paramMap)))// 开始时间2秒后执行.startAtTime(new Date(System.currentTimeMillis() 2000)).wrapper()
);复制代码Once 任务由ApiBootOnceJobWrapper类进行构建。 在参数传递时可以是对象、集合不过需要进行转换成字符串才可以进行使用。 暂停任务执行 任务在执行过程中可以进行暂停操作通过ApiBoot Quartz提供的pauseJob方法就可以很简单的实现当然暂停时需要传递Job KeyJob Key可以从创建任务方法返回值获得。 暂停任务如下所示 // 暂停指定Job Key的任务
apiBootQuartzService.pauseJob(jobKey);
// 暂停多个执行中任务
apiBootQuartzService.pauseJobs(jobKey,jobKey,jobKey);
复制代码恢复任务执行 任务执行完暂停后如果想要恢复可以使用如下方式 // 恢复指定Job Key的任务执行
apiBootQuartzService.resumeJob(jobKey);
// 恢复多个暂停任务
apiBootQuartzService.resumeJobs(jobKey,jobKey,jobKey);
复制代码修改Cron表达式 修改Cron表达式的场景如下 已创建 未执行已创建 已执行修改方法如下所示 // 修改执行Job Key任务的Cron表达式
apiBootQuartzService.updateJobCron(jobKey, 0/5 * * * * ?);
复制代码删除任务 想要手动释放任务时可以使用如下方式 // 手动删除指定Job Key任务
apiBootQuartzService.deleteJob(jobKey);
// 手动删除多个任务
apiBootQuartzService.deleteJobs(jobKey,jobKey,jobKey);
复制代码删除任务的顺序如下 暂停触发器移除触发器删除任务 本章源码地址github.com/hengboy/api… 转载于:https://juejin.im/post/5ca57e756fb9a05e51235ec4