1. 程式人生 > 其它 >Springboot 分散式定時任務 ElasticJob-Lite 3.0 配置和整合

Springboot 分散式定時任務 ElasticJob-Lite 3.0 配置和整合

Springboot 分散式定時任務 ElasticJob-Lite 3.0 配置和使用
ElasticJob用於解決springboot的定時任務 @EnableScheduling 叢集部署產生的衝突

本文基於yml配置檔案和註解啟動分散式定時任務

中文官方文件
中文官方文件

版本依賴
JAVA
請使用 Java 8 及其以上版本。

Maven
請使用 Maven 3.5.0 及其以上版本。

ZooKeeper
請使用 ZooKeeper 3.6.0 及其以上版本。

控制檯頁面
3.0 以後使用全新的控制檯頁面


————————————————
版權宣告:本文為CSDN博主「熊貓先驅」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_44008257/article/details/123019672

下載地址
下載頁面
下載超連結

使用方法

1.解壓縮
// windows解壓工具啟動會報錯,新版本win10可以直接使用tar命令
tar zxvf apache-shardingsphere-elasticjob-3.0.1-lite-ui-bin.tar.gz
 
2.改配置檔案

登入等其他配置

控制檯提供兩種賬戶:管理員及訪客。 管理員擁有全部操作許可權,訪客僅擁有察看許可權。 預設管理員使用者名稱和密碼是 root/root,訪客使用者名稱和密碼是 guest/guest,可通過 conf\application.properties 修改管理員及訪客使用者名稱及密碼。

auth.root_username=root
auth.root_password=root
auth.guest_username=guest
auth.guest_password=guest
 
3.啟動
bin\目錄下的啟動檔案

windows執行start.bat

linux執行start.sh, 8899 為預設埠號,可通過啟動指令碼輸入 -p 自定義埠號。

官方文件
更多資訊參考官方文件

Springboot整合ElasticJob-Lite
POM檔案引入依賴
<dependency>
<groupId>org.apache.shardingsphere.elasticjob</groupId>
<artifactId>elasticjob-lite-core</artifactId>
<version>3.0.1</version>
</dependency>

// 後面基於yml配置需要starter
<dependency>
<groupId>org.apache.shardingsphere.elasticjob</groupId>
<artifactId>elasticjob-lite-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
 
針對spring-boot-starter-parent版本(1.x)較低的,需要指定curator的版本

<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.1.0</version>
</dependency>
 
【作業開發】編寫定時任務(job)
基於yml配置檔案啟動的必須註解@Component,執行業務時也需要自動注入

@Slf4j
@Component
public class TestJob implements SimpleJob {

@Override
public void execute(ShardingContext shardingContext) {
log.info("TestJob開始作業: {}", shardingContext);
// 不分片時將分片數設為1,直接在此寫業務程式碼
// 多分片時
switch (shardingContext.getShardingItem()) {
case 0:
log.info("TestJob第一個分片,引數: {}", shardingContext.getShardingParameter());
break;
case 1:
log.info("TestJob第二個分片,引數: {}", shardingContext.getShardingParameter());
break;
// ..........
}
}

}
 
更多作業型別參考官方文件作業開發

【作業監聽器】
在多個分片的情況,在每個分片執行完後要進行一個數據彙總,這時可以使用作業監聽器

yml檔案配置
用一個yml檔案去專門管理當前服務的job,利用spring.profiles.include=job引入application-job.yml配置檔案

application.yml //主配置檔案
application-dev.yml //本地測試環境配置檔案
application-prod.yml //生產測試環境配置檔案
application-job.yml //job配置檔案
 
配置Zookeeper
elasticjob:
reg-center:
server-lists: localhost:2181
namespace: demo
 
配置job
elasticjob:
jobs:
testJob: #自定義名稱
elasticJobClass: com.example.demo.job.TestJob #類名
cron: 0/5 * * * * ? #執行cron
sharding-total-count: 1 #總分片數
shardingItemParameters: 0=TestJob #分片引數
 
更多配置資訊

全部yml配置
application.yml

spring:
application:
name: demo
profiles:
active: dev
include: job

server:
port: 8232
 
application-dev.yml

spring:
redis:
database: 2
host: 127.0.0.1
port: 6379
elasticjob:
reg-center:
server-lists: 127.0.0.1:2181
namespace: demo
 
application-job.yml

elasticjob:
jobs:
testJob:
elasticJobClass: com.example.demo.job.TestJob
cron: 0/5 * * * * ?
sharding-total-count: 1
shardingItemParameters: 0=TestJob
demoJob:
elasticJobClass: com.example.demo.job.DemoJob
cron: 0/5 * * * * ?
sharding-total-count: 1
shardingItemParameters: 0=DemoJob
 
執行結果
例項1執行分片為1的DemoJob和分片為2的TestJob第一個分片

例項2執行分片為2的TestJob第二個分片

例項1
DemoJob開始作業: ShardingContext(jobName=demoJob, taskId=demoJob@-@0@-@READY@[email protected]@-@24164, shardingTotalCount=1, jobParameter=, shardingItem=0, shardingParameter=DemoJob)
TestJob開始作業: ShardingContext(jobName=testJob, taskId=testJob@-@0@-@READY@[email protected]@-@24164, shardingTotalCount=2, jobParameter=, shardingItem=0, shardingParameter=CPU)
TestJob第一個分片,引數: CPU
 
例項2
TestJob開始作業: ShardingContext(jobName=testJob, taskId=testJob@-@1@-@READY@[email protected]@-@17112, shardingTotalCount=2, jobParameter=, shardingItem=1, shardingParameter=記憶體)
TestJob第二個分片,引數: 記憶體
————————————————
版權宣告:本文為CSDN博主「熊貓先驅」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_44008257/article/details/123019672