如何正确的使用elastic-job

本篇文章为大家展示了如何正确的使用elastic-job,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

成都创新互联长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为嵊泗企业提供专业的网站设计、网站制作,嵊泗网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

1、Docker基础命令
docker ps 列出当前正在运行的容器
docker ps -a 列出全部的容器
docker rm 容器ID 移除容器
docker images 全部镜像

运行zookeeper:
docker run --name elasticzookeeper -p 2181:2181 -v /Users/abc/Desktop/WorkSpace/DockerData/elsaticzookeeper/data:/data/ -d zookeeper
docker run 运行一个容器  —name 给容器起个名字(标识,docker不能重复) -p 宿主端⼝口:容器器端⼝口  -v  宿主⽬目录:容器器⽬目录,挂载磁盘卷  -d 后台运行容器

docker exec -it 容器id  bash  登录到容器中
2、elastic-job

我们可以参考官方的文档(有中文的),很详细有具体的使用,http://elasticjob.io/docs/elastic-job-lite/00-overview/

elastic-job是什么:

(摘自官网)Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Job-Cloud采用自研Mesos Framework的解决方案,额外提供资源治理、应用分发以及进程隔离等功能(PS:我在这里只说Elastic-Job-Lite,因为Job-Cloud我没去研究)。 简单的说Elastic-Job-Lite就是一个分布式定时任务。

怎么使用elastic-job:
1、maven依赖:

  com.dangdang
  elastic-job-lite-spring
  2.1.5




  com.dangdang
  elastic-job-lite-core
  2.1.5
2、简单的列子
2.1写简单的定时任务的代码
public class FirstSimpleJobDemo implements SimpleJob {

    private static final Logger logger = LoggerFactory.getLogger(FirstSimpleJobDemo.class);

    @Override
    public void execute(ShardingContext shardingContext) {

        int shardingTotalCount = shardingContext.getShardingTotalCount();
        int item = shardingContext.getShardingItem();
        String shardingParameter = shardingContext.getShardingParameter();

        logger.info("shardingTotalCount:{},shardingParameter:{}",shardingTotalCount,shardingParameter);

        logger.info("----- ThredID:{},当前分片项:{}",Thread.currentThread().getId(),item);



    }
}

只要实现SimpleJob类然后实现execute就可以了,在execute中写我们的定时任务处理逻辑。

(摘自官网)SimpleJob 意为简单实现,未经任何封装的类型。需实现SimpleJob接口。该接口仅提供单一方法用于覆盖,此方法将定时执行。与Quartz原生接口相似,但提供了弹性扩缩容和分片等功能。 看下官方的demo

public class MyElasticJob implements SimpleJob {
    
    @Override
    public void execute(ShardingContext context) {
        switch (context.getShardingItem()) {
            case 0: 
                // do something by sharding item 0
                break;
            case 1: 
                // do something by sharding item 1
                break;
            case 2: 
                // do something by sharding item 2
                break;
            // case n: ...
        }
    }
}

使用context.getShardingItem()使用多线程对不同的数据做不同的处理。

  • 我们还可以实现Dataflow类型作业用来处理流作业,Script类型作业,用来处理脚本作业。具体可以查看官方文档。

2.2定时任务的配置:

a)需要配置注册中心

代码如下:

其中参数的意思为:

  • server-lists 连接Zookeeper服务器的列表

  • namespace Zookeeper的命名空间

  • base-sleep-time-milliseconds 等待重试的间隔时间的初始值

  • max-sleep-time-milliseconds 等待重试的间隔时间的最大值

  • maxRetries 最大重试次数

其具体使用和参数的单位等请去官网的配置手册中查看。

b)配置任务


其中参数的意思为:

  • id 作业名称

  • class 作业实现类,需实现ElasticJob接口

  • registry-center-ref 注册中心Bean的引用,需引用reg:zookeeper的声明

  • sharding-total-count 作业分片总数

  • sharding-item-parameters 分片序列号和参数用等号分隔,多个键值对用逗号分隔 分片序列号从0开始,不可大于或等于作业分片总数

  • overwrite 本地配置是否可覆盖注册中心配置,如果可覆盖,每次启动作业都以本地配置为准

具体使用可以参考官方配置手册。需要注意,overwrite这个参数默认为false

3、运维平台:
  1. 从github把console的代码下载下来然后运行代码,然后输入http://localhost:8899/即可访问控制台。8899为默认端口号,可通过启动脚本输入-p自定义端口号。

  2. 进入平台,新建全局配置,填写注册中心名称(就是自己好辨识是哪个项目或者那块业务相关的),注册中心地址(zookeeper的地址),命名空间需要和定时任务项目中配置的一致,加完后点击连接按钮,连接上后可进行下步操作

  3. 进入作业操作->作业维度 显示每个定时任务,然后可以操作每个定时任务

  4. 进入作业操作->服务器维度 显示服务器的IP,运行任务的个数等。

上述内容就是如何正确的使用elastic-job,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


网页标题:如何正确的使用elastic-job
文章URL:http://scyanting.com/article/joeheh.html