开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情
引言
ElasticJob 提供了两个版本 ElasticJob Lite 和 ElasticJob Cloud 版本。
| 特性 | ElasticJob-Lite | ElasticJob-Cloud |
|---|---|---|
| 无中心化 | 是 | 否 |
| 资源分配 | 不支持 | 支持 |
| 作业模式 | 常驻 | 常驻 + 瞬时 |
| 部署依赖 | ZooKeeper | ZooKeeper + 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
维护 ZooKeeper 地址
在 ElasticJob Lite UI 上维护 ZooKeeper 地址
发现本地启动的定时任务自动维护到了 ElasticJob Lite UI 上面
编辑任务参数
对 Job parameter 进行编辑
返回本地控制台发现参数被正常打印:
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 集成就算结束了,后续还计划对各种类型的定时任务以及分片策略进行演示实战。