Job Plus 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Job Plus 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Job Plus 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Job Plus 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Job Plus 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 点九先生
适用人群 未知
收录时间 2021-04-29

软件简介

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 执行策略的思考

关于点九

个人站点

最后致谢

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

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2012/03/25 01:08

The "job"

TODO...

0
0
发表于数据库专区
2020/05/09 11:02

oracle创建scheduler job dba_job

scheduler job 1.创建 begin dbms_scheduler.create_job(job_name => 'aaa', job_type => 'STORED_PROCEDURE', job_action => '存储过程', start_date => to_date('18-12-2018 01:00:00', 'dd-mm-yyyy hh24:mi:ss'), repeat_interval => 'Freq=Daily', end_date => to_date(null), job_class => 'DEFAULT_JOB_CLASS', enabled => true, auto_drop => true, comments => ''); end; 说明: 1.JOB_NAME :指定任务的名称,必选值,...

0
0
发表了博客
2019/03/21 01:36

mapreduce.Job: Running job: job_1553100392548_0001

这几天一直在尝试一个mapreduce的例子,但是一直都是卡在mapreduce.Job: Running job: job_1553100392548_0001,查看日志也不报错,查看每个配置文件没有问题,很纳闷。今晚决定把整个流程梳理一下,试图找出问题原因,果然功夫不负有心人。 首先来说一下现象 运行的时候一直卡在这个界面 也没有报错。很奇怪。 然后访问Applications查看情况(http://192.168.23.130:8088) 看到这个页面,有点奇怪,这个任务是未定义的,而且进...

0
0
2018/03/15 09:51

Job的相关

我们给了scheduler 一个JobDetail 实例,而我们再创建JobDetail实例的时候,告诉了它我们的Job的类型,所以,scheduler也是知道我们job的类型的。 每次scheduler在执行Job的时候,在执行job的execute方法之前,都会创建一个我们job的实例,在execute方法执行结束后,job实例会被GC(回收) 这样就会导致两个结果,1、必须为我们自己的job提供一个无参的构造函数 2、无法记录job执行的状态(两次execute之间)。 那么问题来了,如...

0
0
发表了博客
2020/11/25 13:09

Job和CronJob

Job和CronJob是负责批量处理短暂的一次性任务(short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。 Job:是Kubernetes用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(Deployment、Statefulset)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出(Pod自动删除)。 CronJob:是基...

0
0
发表了博客
2018/04/09 23:14

Oracle Job

介绍orcale定时器的简单用法,希望大家一看就能明白 1.创建一个表,为了能清楚看到定时器的运行情况我们创建一个带有日期字段的表 Sql代码 create table job_table(run_time date); 2.创建存储过程 Sql代码 create or replace procedure job_proc is begin insert into job_table (run_time) values (sysdate); end; 3.创建job,并且指定为一分钟执行一次 Sql代码 declare job number; begin dbms_job.submit(job, 'job_proc;'...

0
0
发表了博客
01/26 10:38

XXL-JOB

1.概述 XXL-JOB 是一个轻量级 的 分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 开源社区: https://www.xuxueli.com/xxl-job/#%E3%80%8A%E5%88%86%E5%B8%83%E5%BC%8F%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%B9%B3%E5%8F%B0XXL-JOB%E3%80%8B 参考资料: 《分布式任务调度平台 XXL-JOB 官方文档》一文读懂分布式任务调度平台XXL-JOB 2.特性 XXL-JOB 提供了 35 点特性列表,我们将其重新整理如下:...

0
0
发表了博客
2015/09/22 11:05

Job管理器

Job管理器是基于数据库管理Quartz Job任务,更方便管理Job的生命周期(Job管理器使用) Quartz管理器主要特点: 支持任务的启用、停用 支持MySql、Oracle、DB2等多中数据库 灵活便利的管理quartz任务 支持多主机任务 支持任务参数的传递 一张表管理任务,简单便捷 架构图如下所示: 序列图如下所示: Quartz管理器表结构 新增一条任务 同步任务代码   /**    * 扫描更新任务    */   public synchronized IDataset<IData<String, Obj...

1
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部