SpringCloud与elastic-job集成(一)

背景

在项目初期,基于quartz我们做了一个原始的job调度服务,用以执行我们的定时任务,但是随着业务的扩充,对性能及稳定性有了更高的要求.

就目前而言,除了优化代码,调整单机硬件设备外,已经没有其他方式了,对定时任务代改造势在必行.

elastic-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-spring-boot-starter

将elastic-job以组件的形式引入,在该过程中参考了:

项目开源地址:https://github.com/yinjihuan/elastic-job-spring-boot-starter

将源码克隆下来后,按照readme文件,配置zookeeper及其他信息:

image.png
image.png

与SpringCloud集成

基于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-lite-console

这是个elastic-job的管理台控制工具.

image.png

具体安装部署可参考:

https://blog.csdn.net/u013274055/article/details/77767506?locationNum=5&fps=1

elastic-job-lite-lifecycle

该插件配合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);
}

结语

本篇仅做一个简单介绍,以及一个思路梳理,在下一篇文章中,就我们当前项目会给出一个实际的解决方案.

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

一种快速安装InnoDB Cluster的方法

InnoDB Cluster推出以来,很多人都想尝尝鲜,但是发现事情没有那么简单,MGR还没玩好,一看InnoDB Cluster的三大件MySQL Shell...

3736
来自专栏互联网杂技

Nodejs学习路线图

Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的w...

4548
来自专栏Python中文社区

五个亲测可用的Python论坛类网站开源框架

1、LBForum LBForum是用django开发的论坛系统,LBForum主要注重部署的方便性和易用性,功能方面目前还比较简单。 LBForum的开发尽量...

6139
来自专栏技术/开源

开源的 Restful Api 集成测试工具 Hitchhiker

Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以在轻松部署到本地,和你的team成员一起管理Api。 先上图看看: ? ? ? ...

2107
来自专栏性能与架构

向bootstrap学习前端工程

bootstrap是目前最流行的前端开发框架,提供了丰富的前端组件,对于经验丰富的高手来说,其中的每项功能可能并不是太复杂,但由于他功能丰富,已经是一套系统,所...

2797
来自专栏精讲JAVA

身为Java程序员,这些开源工具你一定要学会

本文主要介绍Java程序员应该在2018年学习的一些基本和高级工具。如果你是一位经验丰富的Java开发人员,拥有5到10年的经验,你可能对这些工具很熟悉,但如果...

673
来自专栏杨建荣的学习笔记

个人的小项目dbm_lite开放了

自从注册了github,在上面花的功夫很少,很早之前开源了一个MySQL Group Replication快速测试的小脚本。惭愧,之后就鲜有更新了。 ...

3189
来自专栏数据小魔方

送你两款炫酷到没朋友的神奇字体~

今天给大家介绍两款字体,这两款字体是一个喜欢设计的大神学长开发的,专门用作mini图表字体。 而且只要是支持字体显示的设备,几乎都可以用,当然Excel里面也可...

3454
来自专栏程序员宝库

现代后端开发者必备技能——2018 版

今天的Web开发与几年前完全不同,有很多不同的东西可以很容易地阻止任何人进入Web开发。这是我们决定制作这些循序渐进的视觉指南的原因之一,这些指南展示了更大的图...

803
来自专栏phodal

Repractise简介篇:Web开发的七天里

本来想着的只是画一个如下面的七天图来说说Web开发的,随后又想了想这似乎是一个非常的Web开发介绍。 ? 第一天:新的开始 我们迎来了我们的新的一个项目,看起来...

1826

扫码关注云+社区