Springboot 集成 ElasticJob Lite

321 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情

引言

ElasticJob 提供了两个版本 ElasticJob Lite 和 ElasticJob Cloud 版本。

特性ElasticJob-LiteElasticJob-Cloud
无中心化
资源分配不支持支持
作业模式常驻常驻 + 瞬时
部署依赖ZooKeeperZooKeeper + Mesos

本文通过集成 ElasticJob Lite Spring Boot Starter 来实现对 ElaticJob Lite 的集成,同时通过 ElasticJob Lite UI 来管理定时任务。

安装 ZooKeeper

昨天介绍了 ZooKeeper 的概念与特点,由于 ElasticJob Lite 依赖于 ZooKeeper,本文就安装一个单机的 ZooKeeper 来集成 ElasticJob-Lite。

下载安装包

下载 Apache ZooKeeper,我选择最近3.7.1(latest stable release)下载安装。解压后目录结构:

  • /bin - User executables
  • /conf - Configuration files
  • /lib - ZooKeeper JAR files and all the required java library dependencies
  • /docs - Documents

修改配置文件

/conf 目录下 zoo_sample.cfg 文件更名为 zoo.cfg,然后编辑此文件,修改数据目录以及添加日志目录。

dataDir=/Users/xxx/software/apache-zookeeper-3.7.1-bin/data
dataLogDir=/Users/xxx/software/apache-zookeeper-3.7.1-bin/log

启动 ZooKeeper

/bin 目录下执行 shell

./zkServer.sh start

停止 ZooKeeper

/bin 目录下执行

./zkServer.sh stop

集成 ElasticJob Lite

pom 依赖

Maven 集成最新版本的 ElasticJob Lite Spring Boot Starter

<!-- https://mvnrepository.com/artifact/org.apache.shardingsphere.elasticjob/elasticjob-lite-spring-boot-starter -->
<dependency>
    <groupId>org.apache.shardingsphere.elasticjob</groupId>
    <artifactId>elasticjob-lite-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>

配置 ZooKeeper 地址

先配置刚刚安装完成的 ZooKeeper 地址

elasticjob:
  regCenter:
    #zookeeper 的ip:port
    serverLists: 127.0.0.1:2181
    #命名空间
    namespace: elasticJob-Lite-Demo

创建定时任务

创建一个简单的定时任务:

@Slf4j
@Component
public class ElasticJobDemo implements SimpleJob {
    @Override
    public void execute(ShardingContext shardingContext) {
        log.info("job name:{}", shardingContext.getJobName());
        log.info("job params:{}", shardingContext.getJobParameter());
    }
}

配置定时任务参数:

elasticjob:
  jobs:
    #定时任务名称
    myElasticJob:
      #定时任务的全路径名
      elasticJobClass: com.demo.elasticjob.ElasticJobDemo
      #定时任务执行的cron表达式
      cron: 0/10 * * * * ?
      #分片数量
      shardingTotalCount: 1

启动 Spring Boot Starter 发现定时任务每10秒正常运行:

2022-12-27 22:45:50.161  INFO 619 --- [ticJob_Worker-1] com.demo.elasticjob.ElasticJobDemo       : job name:myElasticJob
2022-12-27 22:45:50.162  INFO 619 --- [ticJob_Worker-1] com.demo.elasticjob.ElasticJobDemo       : job params:
2022-12-27 22:46:00.018  INFO 619 --- [ticJob_Worker-1] com.demo.elasticjob.ElasticJobDemo       : job name:myElasticJob
2022-12-27 22:46:00.018  INFO 619 --- [ticJob_Worker-1] com.demo.elasticjob.ElasticJobDemo       : job params:
2022-12-27 22:46:10.018  INFO 619 --- [ticJob_Worker-1] com.demo.elasticjob.ElasticJobDemo       : job name:myElasticJob
2022-12-27 22:46:10.018  INFO 619 --- [ticJob_Worker-1] com.demo.elasticjob.ElasticJobDemo       : job params:

ElasticJob Lite UI

下载安装运维平台

最新版本下载地址 ElasticJob Lite UI 下载地址。并对 tar 包进行解压。

启动运维平台

/bin 目录下执行启动脚步:

./start.sh

启动界面,初始账号密码为 root/root

image-20221228090503615.png

维护 ZooKeeper 地址

在 ElasticJob Lite UI 上维护 ZooKeeper 地址

image-20221228092247878.png

发现本地启动的定时任务自动维护到了 ElasticJob Lite UI 上面

image-20221228092505782.png

编辑任务参数

对 Job parameter 进行编辑

image-20221228092554590.png

返回本地控制台发现参数被正常打印:

2022-12-28 09:26:30.027  INFO 15084 --- [ticJob_Worker-1] com.demo.elasticjob.ElasticJobDemo       : hello:myElasticJob
2022-12-28 09:26:30.027  INFO 15084 --- [ticJob_Worker-1] com.demo.elasticjob.ElasticJobDemo       : param:Hello Elatisc Job

至此对 ElasticJob Lite 的 Springboot 集成就算结束了,后续还计划对各种类型的定时任务以及分片策略进行演示实战。