1.前言
当我们用SpringBoot编写定时任务处理业务,但是每次定时的配置都需要修改配置文件,然后重启才生效。有没有办法不需要重启服务,又能测试定时器Job的功能是否正常?
今天跟大家分享一个开源工具,希望能帮助到有这个需求的童鞋们。
2.概念
Elastic-Job是当当网开源的分布式任务调度解决方案,是业内使用较多的分布式调度解决方案。
Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务,,外部仅仅依赖Zookeeper。
今天跟大家分享的就是Elastic-Job-Lite,从如何搭建,到使用触发Job。
3.部署
3.1下载编译
$ git clone https://github.com/elasticjob/elastic-job-lite.git$ cd elastic-job-lite$ mvn clean install -Dmaven.test.skip=true
编译完毕后会生成一个压缩包,这里的版本是以3.0.0.M1为例。
$ ls -lrt elastic-job-lite-console/target/elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz
3.2部署启动
$ tar zxf elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz$ cd elastic-job-lite-console-3.0.0.M1-SNAPSHOT/bin$ ./start.sh
- 默认配置文件是auth.properties, 配置管理员及访客用户名及密码
root.username=rootroot.password=rootguest.username=guestguest.password=guest
- 8899为默认端口号,可通过启动脚本输入-p自定义端口号。
3.3验证
访问http://localhost:8899/即可访问控制台
4.使用教程
当我们用SpringBoot实现了Job服务,我们可以根据提供的定时任务信息,在这个开源网页平台填入相应的信息,那么就可以管理对应的Job服务。
4.1配置注册中心
1.左边菜单点击【全局配置】选中【注册中心配置】,然后出现一个已配置列表,在列表的分页显示下方有个【添加】按钮进行添加。
2.注册中心信息填写
- 注册中心名称:自己自定义填写。
- 注册中心地址:填写对应服务的zk信息,多个用逗号分隔。
- 命名空间:填写对应服务的zk命名空间namespace。
- 登录凭证:可不填,默认zookeeper不需要填写,除非设置了zookeeper相关信息。
3.填写完之后,点击右下角【提交】按钮,即完成。
4.列表中出现新增的注册配置,然后点击该配置最后的操作项,【连接】,则连接上zookeeper。
4.2 查看这个zookeeper注册中心对应的作业
上面配置完注册中心后,会显示对应的定时任务,在左侧【作业操作】下点击【作业维度】,即可查看当前挂在zookeeper的命名空间下的所有任务,提供删除,编辑,触发,失效等一系列功能。
4.3 不同状态下对应的作业按钮
①作业维度下Job已生效的状态为正常,操作下有5个按钮:修改、详情、触发、失效、终止;
②作业维度下Job状态为已失效时,操作下有4个按钮:修改、详情、生效、终止;
③作业维度下Job状态为分片待调整时,操作下有3个按钮:修改、详情、终止;
④作业维度下Job状态为已下线时,操作下有2个按钮:修改、删除。
4.4 修改job的触发时间
1.点击作业维度最后一列操作下的"修改"按钮进入修改作业页面,如图所示:
2.修改“Cron表达式”里的时间格式,改成你想要执行的时间策略,提交修改。
这样到了指定的时间,就会执行这个作业Job,是不是很简单。
4.5 实时触发Job
①处于分片待调整状态的Job,需要更改Cron表达式后程序执行了一次或者springboot的程序执行过一次作业,状态才会变为正常。可以点击“修改”按钮,修改表达式来修改触发器触发的时间;
②job状态显示为正常时,才可以点击“触发”按钮直接触发;
这样触发之后,就是实时的触发Job,我们就直接观察java程序的日志,看业务是否正常。
5.结束语
是不是很简单,再也不需要改配置文件重复Java服务了。
喜欢本文的童鞋,可以关注我+收藏,不明白的地方也可以评论留言。