数据库|Quartz 作业调度框架的掌握,从基础的纯服务到界面可配置化改进( 三 )



这里面用到了AjaxResult , 是我自定义的一个响应类 , 完全可以自己定义 , 主要定义code、msg、data等 , 以及对应的状态类型(SUCCESS、WARN、ERROR)
(4)编写完上面3个文件 , 我们就可以启动项目 , 使用postman来验证一下了 , 先模拟调用获取所有的定时任务 , 刚开始没有添加过任何任务 , 所以会返回没有可执行的job , 同时控制台输出对应的日志 。

然后我们模拟调用新增任务 , 创建一条任务bianchengxia

再获取所有的定时任务 , 此时出现一条之前创建的任务bianchengxia 。

同理删除也是一样的逻辑 , 删除之后再次查询列表 , 已经不展示删除的数据了 , 这里不再展开 。
4、上面的例子是比较简单的示例 , 往往我们项目中的实际运用是比较复杂的 , 需要与数据库进行交互(就是与quart涉及的表相关) , 同时在前端web界面上可以进行展示和动态配置 , 并且记录操作的日志 , 我们来看一个示例 。

新增或者修改定时任务的规则:设置定时任务调用方法、执行的时间规则(cron表达式)、执行的策略、是否并发执行已经状态等核心参数 。

记录任务的执行日志:

以上是web端的界面操作 , 后台SpringBoot集成这块 , 建议把quartz定时器做成一个单独的模块 , 整合到开发的项目当中 。 我们到配置文件 application.yml 中配置quartz , 也可以单独写配置文件 quartz.properties 然后项目启动时加载该配置文件:

整体的业务实现 , 包含工具类(比如校验cron表达式、获取上下文信息、常量、定时任务工具类等)、异常处理类、实体类、接口层和接口实现层、dao层和mybatis数据库交互层、页面操作等:

核心代码就是业务实现层 , 我们看一个核心的SysJobServiceImpl 。

在看一个定时任务工具类:

页面控制:

梳理了之后 , 我们发现他的核心业务也比较简单 , 先创建一个scheduler , 然后创建一个Trigger , 再创建一个job , 最后注册trigger并启动scheduler , 通过页面来进行控制 , 后台进行一些基础的检验 , 业务实现 , 实现数据库交互 。