如何正确的使用elastic-job
本篇文章为大家展示了如何正确的使用elastic-job,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
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 zookeeperdocker 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、运维平台:
从github把console的代码下载下来然后运行代码,然后输入http://localhost:8899/即可访问控制台。8899为默认端口号,可通过启动脚本输入-p自定义端口号。
进入平台,新建全局配置,填写注册中心名称(就是自己好辨识是哪个项目或者那块业务相关的),注册中心地址(zookeeper的地址),命名空间需要和定时任务项目中配置的一致,加完后点击连接按钮,连接上后可进行下步操作
进入作业操作->作业维度 显示每个定时任务,然后可以操作每个定时任务
进入作业操作->服务器维度 显示服务器的IP,运行任务的个数等。
上述内容就是如何正确的使用elastic-job,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。