Job Plus

轻量级定时任务管理系统
授权协议 Apache
开发语言 Java
所属分类 程序开发、 作业/任务调度
软件类型 开源软件
地区 国产
投 递 者 龙兴学
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Job Plus 是一个基于 SpringBoot 的轻量级定时任务管理系统。

相关项目:job-plus-vue 是一个基于Vue的Job Plus的后管 UI。

技术选型

  • springboot 2.3.1
  • SpringSecurity 2.3.1
  • httpclient 4.5.12
  • quartz 2.3.2
  • druid 1.1.22
  • fastjson 1.2.71

项目功能

  1. 架构潮流:系统采用SpringBoot+VUE前后端分离,前端单独部署,Nginx负载均衡
  2. 接口友好:同时支持swagger2、knife4j两种可视化接口API调试,支持离线接口文档;
  3. 任务管理:支持通过Web页面对任务进行CRUD操作,可视化界面,快速上手;
  4. 执行记录:支持通过web页面在线查看调度结果、执行结果、下次执行时间;
  5. 实时日志:支持通过web页面实时查看执行器输出的完整的执行日志;
  6. 唯一搜索:支持通过web界面根据jobname或jobgroup进行全局唯一查询
  7. 强自定义:支持在线配置定时任务请求类型、请求路径、请求参数、Cron表达式,即时生效;
  8. 动态控制:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;
  9. 执行策略:支持丰富的执行策略,包括:Get请求、PostJson请求、PostFrom表单请求;
  10. 自动注册:周期性自动注册任务, 同时,也支持手动录入定时任务地址;
  11. 自动执行:系统会自动发现注册的任务并触发执行,同时,也支持手动触发-立即执行;
  12. 用户管理:支持在线管理系统用户、角色、菜单,默认管理员、开发者、普通用户三种角色;
  13. 权限控制:支持在线权限控制,管理员拥有全量权限,开发者拥有除角色管理外的所有权限,普通用户仅支持任务管理相关权限;
  14. 集群部署:支持分布式执行,系统支持集群部署,可保证任务执行的高可用;
  15. 弹性调度:一旦有任务机器上线或者下线,下次调度时将会重新分配任务;
  16. 路由策略:系统集群部署时提供丰富的路由策略,包括:轮询、随机、故障转移、忙碌转移等常用策略;
  17. 故障转移:任务路由策略选择"故障转移"情况下,如果集群中某一台机器故障,将会自动切换到一台正常的执行器发送调度请求;
  18. 阻塞策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;
  19. 超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;
  20. 重试机制:支持自定义任务重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;
  21. 消息工厂:默认提供邮件工厂的方式推送消息,同时预留扩展接口,可方便的扩展短信、钉钉等消息方式;
  22. 邮件告警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
  23. 运行报表:支持实时查看运行数据,以及调度报表,如调度日期分布图,任务组执行比例比例分布图等;
  24. 事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,提供触发任务单次执行的API服务;
  25. 脚本任务:支持以GLUE分布式平台开发和运行脚本任务,包括Shell、Python、NodeJS等类型脚本;
  26. 多线并发:系统支持多线程触发调度运行,确保调度精确执行,不被堵塞;
  27. 降级隔离:调度线程池进行隔离拆分,慢任务自动降级进入"Slow"线程池,避免耗尽调度线程,提高系统稳定性;
  28. Gradle: 将会把最新稳定版推送到gradle中央仓库, 方便用户接入和使用;
  29. Maven: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用;
  30. 一致性:基于Redis分布式锁保证集群分布式调度的最终一致性, 一次任务调度只会触发一次执行;
  31. 全异步:任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰,理论上支持任意时长任务的运行;
  32. 跨语言:系统提供语言无关的 RESTFUL API 服务,第三方任意语言可据此对接Task Manage;
  33. 国际化:后管系统支持国际化设置,提供中文、英文两种可选语言,默认为中文;
  34. 容器化:提供官方docker镜像,并实时更新推送dockerhub,进一步实现产品开箱即用;

部署方式

  1. 执行sql目录下的job-plus.sql文件,建立task_manage需要的数据库表
  2. 修改application-local.yml中的数据库连接方式
  3. 通过ftp上传job-plus-1.0-SNAPSHOT.jar、start.sh、stop.sh到服务器指定目录
  4. 进入服务器目录,执行 nohup sh start.sh & 命令启动成功
  5. 查看程序启动进程 netstat -anp | grep 18080
  6. 访问 http://localhost:18080/idnex.html 可通过web界面进行定时任务的管理

在线演示

http://jobplus.dianjiu.org.cn (部署中。。。)

项目图片

页面演示

登录页

仪表盘

任务管理 =》任务列表

仪表盘

任务管理 =》执行记录

仪表盘

任务管理 =》生成器 (关闭cron生成器)

仪表盘

任务管理 =》生成器 (打开cron生成器)

仪表盘

数据库演示

任务信息表

t_task_details

执行记录表

t_task_records

异常信息表

t_task_error

更新日志

Job Plus 项目介绍

Job Plus 更新日志

Job Plus 分布式ID的思考

Job Plus 执行策略的思考

关于点九

个人站点

最后致谢

感谢以下开源项目提供的项目参考

  • 在一个特定的时间间隔后,重复运行该任务。 在特定的日期和时间运行任务。 任务成功完成后,下一次执行应该在一个特定的时间间隔 Job的参数: 一:时间间隔执行(每分钟,每天,每周,:每月,每季度,每半年,每年) interval是指上一次执行结束到下一次开始执行的时间间隔,当interval设置为null时,该job执行结束后, 就被从队列中删除。假如 我们需要该job周期性地执行,则要用‘sysd

  • 项目地址:            https://github.com/yuleiqq/quartz_example/tree/master/quartz_study 此示例旨在演示如何将运行时参数传递给quartz作业,以及如何维护作业中的状态。 程序将执行以下操作: 启动Quartz调度器 调度两个作业,每个作业将执行总共10秒一次 调度程序将向第一个作业实例传递一个运行时作业参数“Green

  • 当前位置:我的异常网» 数据库 » JOB忽然停止工作了 JOB忽然停止工作了 www.myexceptions.net  网友分享于:2015-08-26  浏览:79次 JOB突然停止工作了 本文通过一次Oracle Job任务异常案例诊断,分析其原因及解决过程,从内部揭示Oracle Job任务调度及内部计时机制。 问题及环境 接到研发人员报告,数据库定时任务未正常执行,导致某些操作失败。

 相关资料
  • 用于展示Isito服务网格的流量路由特性的任务。 配置请求路由。这个任务展示如何基于权重和HTTP header配置动态请求路由。 故障注入。这个任务展示如何注入延迟并测试应用的弹性。 流量转移。这个任务展示如何将服务的流量从旧版本转移到新版本。 设置请求超时。这个任务展示如何使用Istio在Envoy中设置请求超时。 Istio Ingress控制器。描述如何在Kubernetes上配置Isti

  • 每个新创建的任务都是 org.gradle.api.DefaultTask 类型, org.gradle.api.Task 的标准实现,DefaultTask 所有的域都是私有的,意味着他们只能通过 setter 和 getter 方法来访问,庆幸的是Groovy提供了一些语法糖来允许你通过名字来使用域。 管理项目的版本 许多公司或者开源组织有他们自己的发布版本的措施,一般用主版本号和次版本号来表

  • 用 ceph-deploy 建立一个集群后,你可以把客户端管理密钥和 Ceph 配置文件发给其他管理员,以便让他用 ceph 命令管理集群。 创建一管理主机 要允许一主机以管理员权限执行 Ceph 命令,用 admin 命令: ceph-deploy admin {host-name [host-name]...} 分发配置文件 要把改过的配置文件分发给集群内各主机,可用 config push

  • 在San CLI中主要通过san serve和san build命令进行生产和开发环境的打包,San的脚手架工程内置了四个命令,包括启动本地服务、生产环境打包、打包分析、现代模式打包等,脚手架工程的package.json内可执行的命令有: npm run start // 打包+启动本地服务 npm run build // 打包发布 npm run analyzer // 打包分析 npm r

  • 任务管理(又称 构建)工具 任务管理/构建 工具: Gulp Grunt Tasking/build and more tools: Brunch Mimosa

  • 问题内容: 根据我的经验,Maven在小型/实验性应用程序中常常是过大的。但是,依赖管理是Maven的一项非常有用的功能,实际上是唯一对上述应用程序类型真正有用的功能。 我想知道是否可以有一个 非常最小的轻量级 Eclipse-Maven集成,该集成 仅以 最简单的方式 仅 将Maven依赖项添加到Eclipse项目类路径中。 特别是我不想: 适用于任何Maven约定(包括项目布局召集人) 安装并

  • 将gradle及其spring-boot插件(1.5.1)和第一个spirit插件一起使用会引发一个错误: b)如何从“启动重新打包”中删除“fsm”的依赖项? c)是否可以显示一个分级任务依赖关系图?(不是项目依赖关系)

  • 主要内容:Eclipse 任务管理,打开任务视图,使用任务视图Eclipse 任务管理 程序员喜欢在他们的代码中放置 TODO 标记,作为需要完成的任务的提醒。Java 代码中包含 TODO 一词的注释被识别为任务并显示在标记栏和任务视图中。 通过右键单击标记栏并选择添加任务,可以使用 Eclipse 编辑器将任务与正在编辑的文件相关联。在出现的对话框中输入任务描述并从优先级下拉列表中选择一个优先级,然后单击确定按钮。 要使用 Eclipse 编辑器移除任务