在项目初期,基于quartz我们做了一个原始的job调度服务,用以执行我们的定时任务,但是随着业务的扩充,对性能及稳定性有了更高的要求.
就目前而言,除了优化代码,调整单机硬件设备外,已经没有其他方式了,对定时任务代改造势在必行.
elastic-job相关资料可以从如下博文中获取,总结的非常好,就不在重复赘述,本文仅仅解决如何与SpringCloud集成的问题.
官网:http://elasticjob.io/docs/elastic-job-lite/00-overview
参考资料:https://blog.csdn.net/lovelong8808/article/category/7670721
项目开源地址:https://github.com/elasticjob
将elastic-job以组件的形式引入,在该过程中参考了:
项目开源地址:https://github.com/yinjihuan/elastic-job-spring-boot-starter
将源码克隆下来后,按照readme文件,配置zookeeper及其他信息:
基于elastic-job-spring-boot-starter及我们自身的实际情况,我重写了该starter,添加了我们自己的处理方式,具体处理会在下一篇的文章中与大家分享.
在集成过程中需要注意的是,插件自身的:curator-client,curator-framework,curator-recipes与SpringCloud组件中的curator-client,curator-framework,curator-recipes有版本冲突.
排查问题过程很痛苦.最终在开源中国中得到了解答:
https://www.oschina.net/question/3711138_2268227?sort=time
<properties>
<elastic-job.version>2.1.5</elastic-job.version>
<curator.version>2.10.0</curator.version>
</properties>
<dependencies>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-core</artifactId>
<version>${elastic-job.version}</version>
<exclusions>
<exclusion>
<artifactId>curator-client</artifactId>
<groupId>org.apache.curator</groupId>
</exclusion>
<exclusion>
<artifactId>curator-framework</artifactId>
<groupId>org.apache.curator</groupId>
</exclusion>
<exclusion>
<artifactId>curator-recipes</artifactId>
<groupId>org.apache.curator</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator.version}</version>
</dependency>
</dependencies>
这是个elastic-job的管理台控制工具.
具体安装部署可参考:
https://blog.csdn.net/u013274055/article/details/77767506?locationNum=5&fps=1
该插件配合elastic-job-lite-console使用,可以通过API操控JOB运行状态
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-lifecycle</artifactId>
<version>2.1.5</version>
</dependency>
JobOperateAPI jobAPIService= JobAPIFactory.createJobOperateAPI("zookeeper地址", "任务命名空间", Optional.fromNullable(null));
jobAPIService.trigger(Optional.of("定时任务类的全类名"), Optional.<String>absent())
public interface JobOperateAPI {
void trigger(Optional<String> var1, Optional<String> var2);
void disable(Optional<String> var1, Optional<String> var2);
void enable(Optional<String> var1, Optional<String> var2);
void shutdown(Optional<String> var1, Optional<String> var2);
void remove(Optional<String> var1, Optional<String> var2);
}
本篇仅做一个简单介绍,以及一个思路梳理,在下一篇文章中,就我们当前项目会给出一个实际的解决方案.
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有