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