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 依赖
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.1.2.RELEASE</version>
	<relativePath />
</parent>
<dependencies>
	<dependency>
		<groupId>com.dangdang</groupId>
		<artifactId>elastic-job-lite-core</artifactId>
		<version>2.1.5</version>
	</dependency>
	<dependency>
		<groupId>com.dangdang</groupId>
		<artifactId>elastic-job-lite-spring</artifactId>
		<version>2.1.5</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>
</dependencies>
application-job-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:reg="http://www.dangdang.com/schema/ddframe/reg"
	xmlns:job="http://www.dangdang.com/schema/ddframe/job"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.dangdang.com/schema/ddframe/reg
                        http://www.dangdang.com/schema/ddframe/reg/reg.xsd
                        http://www.dangdang.com/schema/ddframe/job
                        http://www.dangdang.com/schema/ddframe/job/job.xsd
                        ">

	<reg:zookeeper id="jobRegister" server-lists="localhost:2181"
		namespace="elasticJobDemo" base-sleep-time-milliseconds="1000"
		max-sleep-time-milliseconds="3000" max-retries="3" />

	<job:simple id="jobA" class="com.beng.job.ExeJobA"
		registry-center-ref="jobRegister" cron="0/10 * * * * ? *"
		sharding-total-count="1" />

	<job:simple id="jobB" class="com.beng.job.ExeJobB"
		registry-center-ref="jobRegister" cron="0/5 * * * * ? *"
		sharding-total-count="1" />

</beans>
启动类
@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 .");
    }

}

输出结果
在这里插入图片描述

看一下 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 目录下:
在这里插入图片描述
将这个包进行解压:
在这里插入图片描述
其中提供了 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 SelectChannelConnector@0.0.0.0:8899 

运行成功,访问 http://localhost:8899,默认登录名和密码均是 root
在这里插入图片描述
可以看到我连接到了我的 zookeeper 上,并且我注册的两个定时任务也有。

在这里插入图片描述
到此就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值