本文介紹如何將Spring Boot應用接入阿里雲的SchedulerX服務,指導您從建立應用入手,配置必要的接入參數,再到Spring Boot專案中進行用戶端的設定和驗證,確保您的應用順利運行在SchedulerX平台上,實現任務的自動化調度和精準管理。
前提條件
(可選)建立命名空間。當您的應用有較高的安全要求時,您可通過建立命名空間實現資源和服務的隔離,具體操作請參見建立命名空間。
已有SpringBoot專案。
方案概覽
將Spring Boot應用快速接入SchedulerX分為以下幾步:
建立應用:在阿里雲SchedulerX中建立應用,擷取接入SchedulerX配置參數,並對任務進行統一管理和配置。
用戶端接入SchedulerX:在專案中的properties或者yml中,配置SchedulerxWorker所需要的參數並建立任務處理類,串連指定的SchedulerX應用。
結果驗證:確認SpringBoot應用接入成功並正常運行。
步驟一:建立應用
1.1基本配置
登入MSE SchedulerX控制台,並在頂部功能表列選擇地區。
在左側導覽列的應用管理頁面。選擇所屬命名空間後,單擊建立應用。輸入應用程式名稱、應用ID並選擇應用類型,按需設計進階配置,單擊下一步。
重要注意在指定地區和命名空間,建立資源資訊,確保資源資訊準確性。
配置項
描述
預設值
應用程式名稱
自訂設定應用程式名稱。
無
應用ID
應用ID為應用接入的GroupID,保證同一個命名空間下唯一,否則將建立失敗,可以和應用程式名稱一致。
無
應用類型
普通應用:非K8s部署的應用,或者對K8s任務沒有需求。
K8s應用:應用通過K8s部署,並且有需求要使用K8s任務。
普通應用
版本
根據需求選擇版本。
專業版
Log Service
開啟後,增加一個Log4j或Logback的配置,即可在控制台看到每次任務調度(包括分布式任務)的業務日誌,方便排查問題。
關閉
load5
不能超過用戶端機器CPU可用核心數
0
記憶體使用量率
表示近5分鐘進程記憶體平均使用率不能大於該閾值,否則判斷用戶端機器繁忙。
90%
磁碟使用率
表示磁碟使用率不能大於該值,否則判斷用戶端機器不健康,狀態繁忙。
95%
是否觸發繁忙機器
機器繁忙時是否繼續觸發用戶端執行。
開啟
進階配置
任務最大數量
一個分組最多支援的Job數量。
1000
自動擴容
選擇是否自動擴容。開啟時,需要設定全域任務數。
關閉
流控
選擇是否流控。開啟時,需要設定任務執行個體並發數。
關閉
日曆
選擇每天調度或指定日曆,指定日曆支援選擇金融日或者工作日。
金融日:特指金融業務的交易日。
工作日:社會、組織或個人日常活動中正常工作和經營的日期。
0
1.2通知配置
在通知配置嚮導頁填寫相關資訊,選擇通知渠道並設定連絡人。
通知渠道目前支援簡訊、郵件、Webhook和電話。
關於Webhook配置的詳細資料,請參見webhook配置說明。
通知連絡人支援連絡人群組、連絡人兩種方式。
連絡人群組
連絡人群組下所有連絡人都可以接收到通知。關於建立連絡人群組,請參見建立通知連絡人。
連絡人
添加的連絡人可以接收到通知。支援設定多個通知連絡人。新增連絡人...後,單擊前往建立連絡人。

在彈出頁面中單擊建立連絡人後,輸入連絡人資訊。

配置項
描述
通知渠道
目前支援簡訊、郵件、Webhook和電話。
郵件
輸入通知連絡人的真實郵件地址。
Webhook
目前支援企業微信、飛書、DingTalk三種。且可以同時配置多個Webhook機器人,機器人連結用英文逗號(,)分割。
需要在DingTalk機器人增加關鍵字“SchedulerX”(區分大小寫),否則會收不到警示資訊。
擷取Webhook的方法請參見DingTalk開發文檔、企業微信開發文檔和飛書開發文檔。
手機號
輸入連絡人的真實手機號碼。
驗證
重新整理頁面,確定指定地區和命名空間,查看已建立的應用資訊。
步驟二:用戶端接入SchedulerX
在pom.xml增加依賴配置
在SpringBoot應用程式的pom.xml檔案中添加SchedulerxWorker依賴,以便在Spring Boot應用程式中使用SchedulerX提供的功能。
說明SchedulerX支援SpringBoot2.x和3.x版本接入。
<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx2-spring-boot-starter</artifactId> <version>${schedulerx2.version}</version> <!--如果使用logback,需要將log4j和log4j2排除 --> <exclusions> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> </exclusion> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency>重要<version>${schedulerx2.version}</version>替換為最新用戶端版本。例如:<version>1.11.5</version>。更多資訊,請參見用戶端版本發布記錄。
配置參數
在SpringBoot應用的設定檔application.properties中添加SchedulerXWorker所需要的參數,例如串連資訊、認證資訊等,以便串連到SchedulerX應用。
spring.schedulerx2.endpoint=${endpoint} spring.schedulerx2.namespace=${namespace} spring.schedulerx2.groupId=${groupId} # 僅1.2.1及以上版本支援配置appKey spring.schedulerx2.appKey=${appKey} # 如果不使用appKey,可以使用阿里雲AK/SK,或者使用stsToken #spring.schedulerx2.aliyunAccessKey=${aliyunAccessKey} #spring.schedulerx2.aliyunSecretKey=${aliyunSecretKey} #spring.schedulerx2.stsToken=${aliyunStsToken}參數來源:
在分布式任務調度平台左側導覽列的應用管理頁面,單擊目標應用操作列的接入配置,選擇接入的服務類型為Spring Boot。
重要檢查SchedulerX地區和用戶端地區是否保持一致,否則會造成建立串連失敗。
若您使用的是非阿里雲伺服器或本地環境,確保您已開放公網存取權限,並在任務調度平台公網地區建立應用。具體資訊,可參見在本地接入公網環境。
說明如果您的用戶端應用程式套件含多個業務,或者需要將定時任務隔離做許可權管理,可以通過在控制台上建立多個應用,實現定時任務的精細化管理。例如,用戶端應用
animals在控制台上建立了animals.dog和animals.cat兩個應用,無需為兩個應用分別申請執行個體,只需在設定檔application.properties中,通過配置spring.schedulerx2.groupId=${groupId},並以逗號分隔多個應用來實現,如:spring.schedulerx2.groupId=animals.dog,animals.cat。參數說明:
endpoint:初始化SchedulerxWorker時,將使用您部署應用的地區(Region)和對應的endpoint。更多資訊,請參見Endpoint列表。
namespace:命名空間ID,可以在控制台的命名空間頁面擷取。

groupId和appKey:groupId應用ID,appKey為應用key,可以在控制台應用管理頁面擷取。

aliyunAccessKey和aliyunSecretKey:aliyunAccessKey為阿里雲帳號的AccessKeyID,aliyunSecretKey為阿里雲帳號的AccessKeySecret。您可以登入使用者資訊管理主控台,在安全資訊管理頁面擷取。
更多參數請參見下表:
key
描述
設定值
起始版本
spring.schedulerx2.enabled
是否啟用SchedulerX 2.0的starter。預設為true,無需設定。
true
false
0.1.7
spring.schedulerx2.endpoint
設定Region所在的Endpoint。更多資訊,請參見Endpoint列表。
無
0.1.7
spring.schedulerx2.namespace
設定命名空間的UID,可以在控制台命名空間頁面擷取。
無
0.1.7
spring.schedulerx2.groupId
應用ID,可以在控制台應用管理頁面擷取。
無
0.1.7
spring.schedulerx2.appKey
應用Key,可以在控制台應用管理頁面擷取。
無
1.2.1
spring.schedulerx2.host
如果有多個IP(例如VPN或者多網卡),可以設定真實的IP。
無
0.1.7
spring.schedulerx2.port
使用者自訂用戶端監聽連接埠。如果不設定,則隨機播放一個可用連接埠。
無
0.1.7
spring.schedulerx2.blockAppStart
SchedulerX初始化失敗是否阻塞應用啟動。預設為true。
true
false
1.1.0
spring.schedulerx2.shareContainerPool
用戶端所有任務執行是否共用線程池。預設為false。
true
false
1.2.1.2
spring.schedulerx2.sharePoolSize
如果開啟共用線程池,可以自訂線程池大小。預設為64。
無
1.2.1.2
spring.schedulerx2.label
不同用戶端可以設定標籤,任務管理可以指定標籤執行。應用於灰階、壓測等情境。
無
1.2.2.2
spring.schedulerx2.enableCgroupMetrics
是否使用cgroup統計用戶端執行個體的指標。容器(K8s)環境需要手動開啟,預設為false。
true
false
1.2.2.2
spring.schedulerx2.cgroupPathPrefix
容器內cgroup的路徑。
預設路徑為/sys/fs/cgroup/cpu/,如果存在該路徑則不需要設定。
1.2.2.2
spring.schedulerx2.enableHeartbeatLog
是否列印心跳日誌,${user.home}/logs/schedulerx/heartbeat.log
預設為true。
true
false
1.2.4
spring.schedulerx2.mapMasterStatusCheckInterval
設定Map模型檢測所有子任務結束的頻率,單位毫秒。如果秒層級任務需要加快調度頻率時,可以設定。
3000
1.2.5.2
spring.schedulerx2.enableSecondDelayCycleIntervalMs
設定second_delay延遲的單位為毫秒。如果將該值設定為true,控制台設定的秒層級延遲將會變成毫秒,可以加快調度頻率,預設為false。
true
false
1.2.5.2
spring.schedulerx2.broadcastMasterExecEnable
主節點是否參與廣播任務執行。預設為true。
true
false
1.8.13
spring.schedulerx2.broadcastDispatchRetryTimes
廣播分發失敗重試次數,預設不重試;稍候再試預設2s,且不可配置。
3
1.8.13
spring.schedulerx2.enableSecondDelayStandaloneDispatch
是否開啟秒層級單機任務分發執行,預設為false。
true
false
1.8.13
建立任務處理類
在SpringBoot應用中建立JobProcessor類,實現任務調度。
下方範例程式碼介紹如何定時列印一個簡單的JobProcessor類(樣本包名:
hello schedulerx2.0)。package com.aliyun.schedulerx.test.job; import com.alibaba.schedulerx.worker.domain.JobContext; import com.alibaba.schedulerx.worker.processor.JavaProcessor; import com.alibaba.schedulerx.worker.processor.ProcessResult; @Component public class MyHelloJob extends JavaProcessor { @Override public ProcessResult process(JobContext context) throws Exception { System.out.println("hello schedulerx2.0"); return new ProcessResult(true); } }
步驟三:結果驗證
登入分布式任務調度平台,在左側導覽列的應用管理,單擊目標應用操作列的查看執行個體,查看執行個體詳情資訊。

如果執行個體總數為0,說明應用接入失敗。請檢查並修改本地應用。
如果執行個體總數不為0,顯示接入執行個體個數,說明應用接入成功。
後續步驟
應用接入SchedulerX完成後,即可在分布式任務調度平台建立調度任務。更多資訊,請參見建立調度任務。
常見問題
使用SchedulerX時,對於警示資訊的處理,請參見警示常見問題。
Spring任務接入SchedulerX任務調度中的常見問題,請參見Spring任務問題。
相關文檔
如您想瞭解其他用戶端接入方式,請參見用戶端快速接入SchedulerX。