前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >elastic-job入门demo

elastic-job入门demo

原创
作者头像
3号攻城狮
发布于 2018-05-29 11:41:05
发布于 2018-05-29 11:41:05
2.1K6
举报

背景

项目准备使用elastic-job,翻看了一下官方文档.

代码语言:txt
AI代码解释
复制
链接:http://elasticjob.io/index.html

以及在网上找了相关demo,基本上都是复制了官网的简单教程,没有一个明确的demo.

仅做一个完整的简单demo,帮助像我一样的呆萌IT小哥来一个傻瓜式入门.

安装Zookeeper

代码语言:txt
AI代码解释
复制
下载地址 http://www.apache.org/dyn/closer.cgi/zookeeper
image.png
image.png

下载任意可用版本即可

代码语言:txt
AI代码解释
复制
解压 tar zxvf zookeeper-3.4.12.tar.gz

配置

任意目录下创建data,logs文件下

为方便管理,在zookeeper-3.4.12文件下创建data,logs文件夹.

image.png
image.png

编辑配置文件

在“conf”目录下,新建一个名为“zoo.cfg”的文件,其中内容如下:

代码语言:txt
AI代码解释
复制
tickTime=2000  

dataDir= /Users/pikachu/tool/zookeeper-3.4.12/data

dataLogDir=/Users/pikachu/tool/zookeeper-3.4.12/logs

clientPort=2181
代码语言:txt
AI代码解释
复制
#tickTime: zookeeper中使用的基本时间单位, 毫秒值.
#dataDir: 数据目录. 可以是任意目录.
#dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和#dataDir相同的设置.
#clientPort: 监听client连接的端口号.

运行ZooKeeper Server

执行./bin/zkServer.sh start命令,运行ZooKeeper Server进程,得到如图所示结果,表示后台运行ZooKeeper Server进程成功。

image.png
image.png

停止:./bin/zkServer.sh stop

image.png
image.png

到此已经能满足我们创建一个elastic-job

创建普通Spring Boot工程

image.png
image.png

导入依赖

代码语言:txt
AI代码解释
复制
<dependencies>
        <!-- 引入elastic-job-lite核心模块 -->
        <dependency>
            <groupId>com.dangdang</groupId>
            <artifactId>elastic-job-lite-core</artifactId>
            <version>2.0.5</version>
        </dependency>
        <!-- 使用springframework自定义命名空间时引入 -->
        <dependency>
            <groupId>com.dangdang</groupId>
            <artifactId>elastic-job-lite-spring</artifactId>
            <version>2.0.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>
        </dependency>
    </dependencies>
image.png
image.png

创建运行文件

代码语言:txt
AI代码解释
复制
public class MyElasticJob implements SimpleJob {

    public void execute(ShardingContext context) {
        System.out.println(context.toString());
        switch (context.getShardingItem()) {
            case 0:
                System.out.println("------------->>>>0");
                break;
            case 1:
                System.out.println("------------->>>>1");
                break;
            case 2:
                System.out.println("------------->>>>2");
                break;
           default:
               System.out.println("------------->>>>default");
               break;
        }
    }
    public static void main(String[] args) {
        new JobScheduler(createRegistryCenter(), createJobConfiguration()).init();
    }
    private static CoordinatorRegistryCenter createRegistryCenter() {
        CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(new ZookeeperConfiguration("10.211.108.160:2181", "elastic-job-demo"));
        regCenter.init();
        return regCenter;
    }
    private static LiteJobConfiguration createJobConfiguration() {
        JobCoreConfiguration simpleCoreConfig = JobCoreConfiguration.newBuilder("demoSimpleJob", "0/15 * * * * ?", 10).build();
        // 定义SIMPLE类型配置
        SimpleJobConfiguration simpleJobConfig = new SimpleJobConfiguration(simpleCoreConfig, MyElasticJob.class.getCanonicalName());
        // 定义Lite作业根配置
        LiteJobConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(simpleJobConfig).build();
        return simpleJobRootConfig;
    }
}

启动Zookeeper,运行main方法

image.png
image.png

运行成功!!!

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

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

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

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

评论
登录后参与评论
6 条评论
热度
最新
很不错的教程,代码写的也很好,谢谢楼主的分享
很不错的教程,代码写的也很好,谢谢楼主的分享
22点赞举报
最近一直在这一块的资料,推荐你去看看另一个博主的博客,很赞.
最近一直在这一块的资料,推荐你去看看另一个博主的博客,很赞.
回复回复点赞举报
https://blog.csdn.net/lovelong8808/article/category/7670721
https://blog.csdn.net/lovelong8808/article/category/7670721
回复回复点赞举报
不错,给我们的感觉就是思维清晰,有条理。对我们很有帮助,很感谢你的分享。
不错,给我们的感觉就是思维清晰,有条理。对我们很有帮助,很感谢你的分享。
22点赞举报
最近也是在学习这个,这个第一天接触的时候写的,也找到了其他的非常好的博客,推荐你去看看
最近也是在学习这个,这个第一天接触的时候写的,也找到了其他的非常好的博客,推荐你去看看
回复回复点赞举报
https://blog.csdn.net/lovelong8808/article/category/7670721
https://blog.csdn.net/lovelong8808/article/category/7670721
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
分布式作业 Elastic-Job 快速上手指南,从理论到实战一文搞定!
Elastic-Job支持 JAVA API 和 Spring 配置两种方式配置任务,这里我们使用 JAVA API 的形式来创建一个简单的任务入门,现在都是 Spring Boot 时代了,所以不建议使用 Spring 配置文件的形式。 Elastic-Job 需要依赖 Zookeeper 中间件,用于注册和协调作业分布式行为的组件,目前仅支持 Zookeeper。我们已经创建了 Zookeeper 集群! 环境要求 1、Java 请使用 JDK 1.7 及其以上版本。 2、Zookeeper 请使用
Java技术栈
2018/06/04
1.8K0
一文搞懂Elastic-Job(内附源码解析)
Elastic-Job是当当基于Zookepper,Quartz开发并且开源的Java分布式定时任务,解决Quartz不支持分布式的弊端。它由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。
胖虎
2019/06/26
4.1K2
一文搞懂Elastic-Job(内附源码解析)
Spring-boot整合elastic-job分布式调度解决方案
Spring-boot整合elastic-job分布式调度解决方案 文档地址:http://elasticjob.io/docs/elastic-job-lite/00-overview/intro/
林老师带你学编程
2019/05/25
3.6K0
从Zookeeper 到 Elastic Job 的Simple Job使用(二)
按理说,我赋值的是shardingparameter,但是结果确实jobparameter,因为我一开始使用了jobparameter,然后改成shardingparameter
MickyInvQ
2020/09/27
1.6K0
从Zookeeper 到 Elastic Job 的Simple Job使用(二)
分布式任务调度框架Elastic-Job的简单实用
Elastic-Job <dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-lite-core</artifactId> <version>2.1.5</version> </dependency> public class MessagePushJob implements SimpleJob { @Over
用户1215919
2021/12/28
3930
分布式定时任务 -- elastic-job
在我们的项目当中,使用定时任务是避免不了的,我们在部署定时任务时,通常只部署一台机器。部署多台机器时,同一个任务会执行多次。比如短信提醒,每天定时的给用户下发短信,如果部署了多台,同一个用户将发送多条。只部署一台机器,可用性又无法保证。今天向大家介绍一款开源产品,分布式定时任务解决方案---- elastic-job。
小忽悠
2019/02/25
9230
集成elastic-job分布式调度定时任务
定时任务这一组件在工作过程中经常使用到,在单机节点上可以直接选择使用Spring自带的定时任务组件hubble-task,而这种定时任务一旦确定固化了定时触发策略,也无法动态开启关闭,所以后来有了Quartz。
余生大大
2022/11/02
7590
集成elastic-job分布式调度定时任务
SpringCloud与elastic-job集成(一)
在项目初期,基于quartz我们做了一个原始的job调度服务,用以执行我们的定时任务,但是随着业务的扩充,对性能及稳定性有了更高的要求.
3号攻城狮
2018/06/10
6.6K0
SpringCloud与elastic-job集成(一)
springboot整合定时框架-Elastic-job-lite
一、前言 本文Github地址 官网地址 当当网张亮主导开发的分布式任务调度框架,结合zookeeper技术解决quartz框架在分布式系统中重复的定时任务导致的不可预见的错误! Code Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。 Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务;Elastic-Job-Cloud采用自研Mesos Fram
MiChong
2020/09/24
2.3K0
elastic-job-lite入门以及架构原理分析
简单作业类型:我们实现SimpleJob接口中的execute方法,在里面处理自己的业务需求,调度器通过配置的cron表达式进行调度。
阿伟
2019/07/17
4.6K1
elastic-job-lite入门以及架构原理分析
看完这篇文章,还敢说自己不会分布式任务调度?
以上场景就是任务调度所需要解决的问题,任务调度是为了自动完成特定任务,在约定的特定时刻去执行任务的过程。
上分如喝水
2021/08/16
1.2K0
看完这篇文章,还敢说自己不会分布式任务调度?
分布式调度Elastic-Job攻略
昨天虽然试用了一下唯品会的“土星”,但是我实在没想明白他的Job该怎么用Spring来托管,所以没有使用。今天来说一下当当的Elastic-Job.
算法之名
2019/08/20
8990
定时任务之elastic-job概述
例子中是HelloQuartz。 为什么设计成JobDetail + Job,不直接使用Job?这是因为任务是有可能并发执行,如果Scheduler直接使用Job,就会存在对同一个Job实例并发访问的问题。而JobDetail & Job 方式,sheduler每次执行,都会根据JobDetail创建一个新的Job实例,这样就可以规避并发访问的问题。
翎野君
2023/05/12
6060
定时任务之elastic-job概述
SpringBoot2 整合ElasticJob框架,定制化管理流程
在前面的文章中,说过QuartJob这个定时任务,被广泛应用的定时任务标准。但Quartz核心点在于执行定时任务并不是在于关注的业务模式和场景,缺少高度自定义的功能。Quartz能够基于数据库实现任务的高可用,但是不具备分布式并行调度的功能。
知了一笑
2020/03/12
6210
分布式作业 Elastic-Job-Lite 源码分析 —— 注册中心
ZookeeperRegistryCenter,基于 Zookeeper 注册中心。从上面的类图可以看到,ZookeeperRegistryCenter 实现 CoordinatorRegistryCenter 接口,CoordinatorRegistryCenter 继承 RegistryCenter 接口。
芋道源码
2018/10/26
1K0
Elastic Job 入门详解
Elastic job是当当网架构师张亮,曹昊和江树建基于Zookepper、Quartz开发并开源的一个Java分布式定时任务,解决了Quartz不支持分布式的弊端。Elastic job主要的功能有支持弹性扩容,通过Zookepper集中管理和监控job,支持失效转移等,这些都是Quartz等其他定时任务无法比拟的。
全栈程序员站长
2022/07/05
3950
elastic-job 新手指南
大多数情况下,定时任务我们一般使用quartz开源框架就能满足应用场景。但如果考虑到健壮性等其它一些因素,就需要自己下点工夫,比如:要避免单点故障,至少得部署2个节点吧,但是部署多个节点,又有其它问题,有些数据在某一个时刻只能处理一次,比如 i = i+1 这些无法保证幂等的操作,run多次跟run一次,完全是不同的效果。 对于上面的问题,我曾经自行设计过一个基于zk分布式锁的解决方案: 1、每类定时job,可以分配一个独立的标识(比如:xxx_job) 2、这类job的实例,部署在多个节点上时,每个节点启
菩提树下的杨过
2018/05/28
2.6K0
分布式做系统 Elastic-Job-Lite 源码分析 —— 作业初始化
作业注册表( JobRegistry ),维护了单个 Elastic-Job-Lite 进程内作业相关信息,可以理解成其专属的 Spring IOC 容器。因此,其本身是一个单例。
芋道源码
2018/09/30
5810
分布式做系统 Elastic-Job-Lite 源码分析 —— 作业初始化
zookeeper入门
Apache ZooKeeper是Apache软件基金会的一个软件项目,他为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。ZooKeeper曾经是Hadoop的一个子项目,但现在是一个独立的顶级项目。 ZooKeeper的架构通过冗余服务实现高可用性。因此,如果第一次无应答,客户端就可以询问另一台ZooKeeper主机。ZooKeeper节点将它们的数据存储于一个分层的命名空间,非常类似于一个文件系统或一个前缀树结构。客户端可以在节点读写,从而以这种方式拥有一个共享的配置服务。更新是全序的。--维基百科
LiosWong
2019/05/13
6930
分布式任务调度框架 Elastic-Job 之动态任务发布实现详解
任务调度 JDK 的几种实现方式如下: 1)多线程: 通过开启一个线程,while 循环执行业务逻辑,让线程 sleep 休眠,达到任务间隔执行。代码清单如下图所示:
IT技术小咖
2020/05/13
1.5K0
相关推荐
分布式作业 Elastic-Job 快速上手指南,从理论到实战一文搞定!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档