java定时任务管理_基于SpringBoot+layui秒级定时任务管理:JTimer for JAVA项目
一、JTimer for JAVA简介
1、项目介绍
JTimer for JAVA是基于SpringBoot+layui秒级定时任务管理,取代crontab。其PHP版本 https ://gitee.com/itzhoujun/JTimer,基于thinkphp5+layui秒级定时任务管理,任务进程使用master-worker模型,无阻塞执行任务,预览图可以点击上方php版本连接,两个版本功能基本一致。
jtimer使用了master-worker进程模型,能够实现无阻塞执行任务。时间表达使用了cron表达式,可精确到秒级,方便好用(比crontab多一位)
运行环境包括了1、Linux;2、JDK1.8 及以上版本;3、mysql
cron表达式
2、安装教程
创建数据库jtimer,将src/main/resources目录下jtimer.sql导入修改application.yml中数据库连接配置在项目根目录下执行mvn clean package打包项目,将在target目录下生成jar包用java命令执行target下jar包:
java -jar jtimer-0.0.1-SNAPSHOT.jar > jtimer-java.log2>&1 &
用户名密码:admin/admin
当前版本缺少登录验证码功能,后续版本补上
3、进程描述
j进程描述
简单来说,就是两个worker进程,1个负责数据的读写(读任务,写日志),1个负责任务的执行(创建task进程执行任务)。
两者之间通过tp框架自带的文件缓存作为沟通的桥梁。
Q1: 为什么要用两个worker,而不是一个worker直接读数据库然后执行任务?
为了让任务不阻塞,执行每一个任务时都会创建一个新的task进程去执行,task进程执行完毕会退出。如果在worker进程使用了数据库连接,那么fork出来的task进程会继承worker进程的连接(共用一个数据库连接),在task进程退出后,worker和task共用的连接也将被关闭,导致worker断开数据库连接。
Q2:cron任务定时执行是如何实现的?
先解析任务的cron表达式得到该任务下次要执行的具体时间,然后将该任务置于时间轮片(TimingWheel)中,worker进程每秒查看一次时间轮片,发现有要执行的任务就取出来执行。执行完毕后再重复执行上面的步骤。(关于TimingWheel,请自行百度)
4、注意
本项目只在测试环境运行过,如果要用于生产环境,请自行进行严格的测试后再投入使用。如有问题,自行负责。定时器每秒有零点几毫秒的误差,几个小时累计下来可能有1秒的误差。因此要求时间非常精准的业务任务请不要使用本系统。
5演示图片
y演示1
演示5
java定时任务管理_基于SpringBoot+layui秒级定时任务管理:JTimer for JAVA项目相关推荐
- java 延时发送邮件_基于SpringBoot实现定时发送邮件过程解析
前提: 1.springboot项目 2.引入maven 依赖 org.springframework.boot spring-boot-starter-mail 以下代码中涉及到的maven依赖有日 ...
- java 异常国际化_基于springboot实现http响应异常信息国际化
背景 国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正. 本文提到的异常响应信息国际化是指:前端向后台发起请求,后台在处理 ...
- java jwt刷新_基于springboot+jwt实现刷新token过程解析
前一段时间讲过了springboot+jwt的整合,但是因为一些原因(个人比较懒)并没有更新关于token的刷新问题,今天跟别人闲聊,聊到了关于业务中token的刷新方式,所以在这里我把我知道的一些点 ...
- java动物乐园_基于jsp的动物园管理系统-JavaEE实现动物园管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的动物园管理系统, 该项目可用各类java课程设计大作业中, 动物园管理系统的系统架构分为前后台两部分, 最终实现在 ...
- java员工信息管理_基于jsp的员工信息管理-JavaEE实现员工信息管理 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的员工信息管理, 该项目可用各类java课程设计大作业中, 员工信息管理的系统架构分为前后台两部分, 最终实现在线上 ...
- 基于java家教管理系统_基于jsp的家教信息管理-JavaEE实现家教信息管理 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的家教信息管理, 该项目可用各类java课程设计大作业中, 家教信息管理的系统架构分为前后台两部分, 最终实现在线上 ...
- java固定资产管理系统_基于jsp的固定资产管理系统-JavaEE实现固定资产管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的固定资产管理系统, 该项目可用各类java课程设计大作业中, 固定资产管理系统的系统架构分为前后台两部分, 最终实 ...
- java 健身会所_基于jsp的健身俱乐部会员-JavaEE实现健身俱乐部会员 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的健身俱乐部会员, 该项目可用各类java课程设计大作业中, 健身俱乐部会员的系统架构分为前后台两部分, 最终实现在 ...
- java 花卉管理系统_基于jsp的花卉交易-JavaEE实现花卉交易 - java项目源码
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的花卉交易, 该项目可用各类java课程设计大作业中, 花卉交易的系统架构分为前后台两部分, 最终实现在线上进行花卉 ...
最新文章
- spring amqp rabbitmq fanout配置
- (详细讲解)配置Pycharm连接服务器跑本地代码
- python 入门第六课 class面向对象OOP
- Windows和Linux下apache-artemis-2.10.0安装配置
- cxgrid 行合并单元格_Excel合并单元格无法筛选和排序,你必须掌握这3个小技巧...
- 微信小程序 图标的角标实现
- 优秀的Git客户端:Tower for mac
- 英雄联盟服务器维护时间,英雄联盟维护的时间是几点结束 lol维护公告几点结束今天...
- Fluent中floating point exception的问题原因及处理方法
- matlab高斯投影坐标,基于matlab的高斯投影正反算与相邻带坐标换算程序设计
- C语言编程从键盘输入n值
- 第三方账号登陆-sina微博_PC篇
- Windows Server 2012 R2安装并升级Exchange2010后端服务器(LZK)
- 食堂窗口排长队?社区如何改善老年人用餐问题
- memory:arm 分区layout以及虚拟内存布局-小结
- 我的第一篇博文——写下我的规划
- 单片机彩灯移动实验_单片机动态控制64个彩灯实验报告
- 海康摄像机在Edge浏览器的网页无法直接预览,按照要求安装WebComponents后仍然提示请安装插件的解决办法
- 程序员眼中的Linux操作系统——初识指令
- 中国中型、中小型企业的业务诉求