elastic-job、elastic-job-lite-console 的使用

前言

本文主要介绍关于当当开源的 分布式任务调度框架 elastic-job 的使用。

环境
  1. zookeeper
  2. java8
  3. docker
    我们使用 docker 运行 zookeeper。
zookeeper 环境安装
  1. 使用 docker 拉取 zookeeper 镜像
docker pull zookeeper
  1. 构建 container
docker run --name zookeeper_node1 -p 2181:2181 -d zookeeper

在这里插入图片描述
3. 进入到 container 环境中

docker exec -it zookeeper_node1 bash

在这里插入图片描述

进入到 bin 下,运行 zkCli.sh 就可以连接到 zookeeper 了。

接下来我们使用 springboot 整合 elastic-job

pom 依赖

	org.springframework.boot
	spring-boot-starter-parent
	2.1.2.RELEASE
	


	
		com.dangdang
		elastic-job-lite-core
		2.1.5
	
	
		com.dangdang
		elastic-job-lite-spring
		2.1.5
	
	
		org.springframework.boot
		spring-boot-starter-web
	
	
		org.springframework.boot
		spring-boot-starter
	

application-job-config.xml



	

	

	


启动类
@ImportResource(value = { "classpath:application-job-config.xml" })
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

任务: 这里我们写了两个任务,一个五秒执行一次,一个十秒执行一次。

public class ExeJobA implements SimpleJob {

    @Override
    public void execute(ShardingContext arg0) {
        System.out.println("JOB A is execute .");
    }

}


public class ExeJobB implements SimpleJob {

    @Override
    public void execute(ShardingContext arg0) {
        System.out.println("JOB B is execute .");
    }

}

输出结果
elastic-job、elastic-job-lite-console 的使用_第1张图片

看一下 zookeeper 中的节点信息
进入到容器的 bash 中,并连接 zookeeper

> ls /
[elasticJobDemo, zookeeper]

可以看到起节点中有 elasticJobDemo,也就是我们配置文件当中的命名空间 namespace,打开这个节点看一下

> ls /elasticJobDemo
[jobA, jobB]

其下包含了我们注册的两个任务,点来其中一个看一下。

> ls /elasticJobDemo/jobB
[config, instances, leader, servers, sharding]

config 任节点中存储了任务节点的配置信息,instance 包含了执行的实例信息, leader 中包含了选举那个节点执行了任务,servers 中包含注册这个任务的机器节点,sharding 中也包含具体实例信息。

挨个看一下

>  get /elasticJobDemo/jobB/config
{"jobName":"jobB","jobClass":"com.beng.job.ExeJobB","jobType":"SIMPLE","cron":"0/5 * * * * ? *","shardingTotalCount":1,"shardingItemParameters":"","jobParameter":"","failover":false,"misfire":true,"description":"","jobProperties":{"job_exception_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultJobExceptionHandler","executor_service_handler":"com.dangdang.ddframe.job.executor.handler.impl.DefaultExecutorServiceHandler"},"monitorExecution":true,"maxTimeDiffSeconds":-1,"monitorPort":-1,"jobShardingStrategyClass":"","reconcileIntervalMinutes":10,"disabled":false,"overwrite":false}

> ls /elasticJobDemo/jobB/instances
[192.168.0.110@-@76563]
> get /elasticJobDemo/jobB/instances/192.168.0.110@-@76563
[]

> ls /elasticJobDemo/jobB/leader
[election, sharding]
> get /elasticJobDemo/jobB/leader/election/instance
192.168.0.110@-@76563

> ls /elasticJobDemo/jobB/servers
[192.168.0.111, 192.168.0.110]

> get /elasticJobDemo/jobB/sharding/0/instance
192.168.0.110@-@76563

elastic-job-lite-console

当当同时还开源对于 elastic-job 的可视化界面。
首先将 elastic-job-lite-console 代码 download 到本地进行编译打包。
github:https://github.com/elasticjob/elastic-job-lite

进入到 /elastic-job-lite-dev/elastic-job-lite-console/target 目录下:
在这里插入图片描述
将这个包进行解压:
elastic-job、elastic-job-lite-console 的使用_第2张图片
其中提供了 windowslinux 两个环境的脚本,我使用的 linux 环境,运行 start.sh

> ./start.sh
[INFO ] 2019-07-24 22:39:38,757 --main-- [io.elasticjob.lite.lifecycle.restful.RestfulServer] Elastic Job: Start RESTful server 
[INFO ] 2019-07-24 22:39:38,777 --main-- [org.eclipse.jetty.server.Server] jetty-8.1.19.v20160209 
[INFO ] 2019-07-24 22:39:38,956 --main-- [org.eclipse.jetty.server.AbstractConnector] Started [email protected]:8899 

运行成功,访问 http://localhost:8899,默认登录名和密码均是 root
elastic-job、elastic-job-lite-console 的使用_第3张图片
可以看到我连接到了我的 zookeeper 上,并且我注册的两个定时任务也有。

elastic-job、elastic-job-lite-console 的使用_第4张图片
到此就完成了。

你可能感兴趣的:(Spring)