当我们用SpringBoot编写定时任务处理业务,但是每次定时的配置都需要修改配置文件,然后重启才生效。有没有办法不需要重启服务,又能测试定时器Job的功能是否正常?
今天跟大家分享一个开源工具,希望能帮助到有这个需求的童鞋们。
Elastic-Job是当当网开源的分布式任务调度解决方案,是业内使用较多的分布式调度解决方案。
Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务,,外部仅仅依赖Zookeeper。
今天跟大家分享的就是Elastic-Job-Lite,从如何搭建,到使用触发Job。
$ 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
$ 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
root.username=root
root.password=root
guest.username=guest
guest.password=guest
访问http://localhost:8899/即可访问控制台
当我们用SpringBoot实现了Job服务,我们可以根据提供的定时任务信息,在这个开源网页平台填入相应的信息,那么就可以管理对应的Job服务。
1.左边菜单点击【全局配置】选中【注册中心配置】,然后出现一个已配置列表,在列表的分页显示下方有个【添加】按钮进行添加。
2.注册中心信息填写
3.填写完之后,点击右下角【提交】按钮,即完成。
4.列表中出现新增的注册配置,然后点击该配置最后的操作项,【连接】,则连接上zookeeper。
上面配置完注册中心后,会显示对应的定时任务,在左侧【作业操作】下点击【作业维度】,即可查看当前挂在zookeeper的命名空间下的所有任务,提供删除,编辑,触发,失效等一系列功能。
①作业维度下Job已生效的状态为正常,操作下有5个按钮:修改、详情、触发、失效、终止;
②作业维度下Job状态为已失效时,操作下有4个按钮:修改、详情、生效、终止;
③作业维度下Job状态为分片待调整时,操作下有3个按钮:修改、详情、终止;
④作业维度下Job状态为已下线时,操作下有2个按钮:修改、删除。
1.点击作业维度最后一列操作下的"修改"按钮进入修改作业页面,如图所示:
2.修改“Cron表达式”里的时间格式,改成你想要执行的时间策略,提交修改。
这样到了指定的时间,就会执行这个作业Job,是不是很简单。
①处于分片待调整状态的Job,需要更改Cron表达式后程序执行了一次或者springboot的程序执行过一次作业,状态才会变为正常。可以点击“修改”按钮,修改表达式来修改触发器触发的时间;
②job状态显示为正常时,才可以点击“触发”按钮直接触发;
这样触发之后,就是实时的触发Job,我们就直接观察JAVA程序的日志,看业务是否正常。
是不是很简单,再也不需要改配置文件重复Java服务了。