码云地址:https://gitee.com/lanyanhua/timed_task_management_pingt


将定时任务这块逻辑抽出来,作为一个独立的服务系统,通过调用http接口来执行任务的业务。业务服务器提供执行定时业务的http接口,由定时任务服务来在规定的时间来触发调用执行。也就是说该系统只做一个定时触发的功能。

可视化图形界面、动态修改定时任务信息

执行的结果可以通过邮箱提醒(成功失败都提醒,只失败提醒以及根据连续失败次数来提醒)

轻松解决集群定时任务处理,因为是http接口调用,所以用负载均衡算法找台服务来执行就可以了

其他语言写的服务也是可以用的,因为是用的http接口执行的,只需要遵守接口规则就可以了

软件架构

软件架构说明 springBoot,springDataJpa,quartz,thymeleaf,layui 

python 分布式定时任务 定时任务分布式部署_spring schedule

 

python 分布式定时任务 定时任务分布式部署_定时任务_02

 

使用教程

  1. 数据库 oralce,mysql都可以包都引入了、修改一下配置文件就好了,因为使用的是jpa所以会自动建库建表 oralce:加上这句就好了,我用的使用就两个数据库都过了application-prd中就是oracle的 properties: hibernate: dialect: org.hibernate.dialect.Oracle10gDialect 用jpa建表时注意第一次启动服务修改为 create 之后改为update就好了 jpa: hibernate: ddl-auto: create
  2. 部署 百度说的细一些,springboot项目部署 jar包:jdk需要1.8,安装的是1.8的话就随便丢那吧 到jar包所在的文件夹执行命令 java -jar job.jar 安装的不是1.8,就把jar包放到jdk1.8的bin下 执行命令就好了 war包:jdk1.8,tomcat1.8,我用的是这个版本,可以试试其他版本

使用说明

  1. 页面展示 菜单栏: 定时任务管理 |-项目维护 |-任务列表 |-邮箱管理 日志管理 |-执行日志查看 

python 分布式定时任务 定时任务分布式部署_spring schedule_03

python 分布式定时任务 定时任务分布式部署_java_04

python 分布式定时任务 定时任务分布式部署_spring quartz_05

python 分布式定时任务 定时任务分布式部署_spring quartz_06

  1. 页面不多使用简单,功能强大
  2. 接口规范 没有添加校验是直接调用的,要是觉得不安全就,还需要扩展一下重写调用方法 继承 ExecuteJob.java,重写executeCall()方法  在 resources/static/data/jobClass.json 中加入该class的路径  然后在新增job的页面就可以看到了 其他方法重写也是一样的,只需配置好类,然后新增任务是选择你的那个就可以了
    被调用方接口需要使用 Result.java作为结果对象,当然需要转成json 这个在job-server中有例子,这个项目时我用来测试的


    第一次写博客小白一个,公司开发一老用到定时任务来同步数据。简单一点的就直接写到代码配置文件里面,但是修改起来感到十分的不方便,主要时集群环境的实在是太恶心了,维护一套修改页面要花太多功夫,别的系统也不能用。那天就在想有什么好的解决方案时,想到了手动触发按钮。在写定时任务时很多时候都会写个手动执行的按钮,因为手动执行按钮就是http请求触发,灵机一动就想到了这个解决方案