本文將介紹如何將現有開源的XXL-JOB任務匯入阿里雲任務調度平台中,無需修改任何代碼,即可完成任務的重新部署,實現高效的任務調度和管理。
方案概覽
您可以藉助阿里雲提供的匯出工具,從開源XXL-JOB中直接匯出任務配置,再匯入遷移至雲上執行個體中。大致分為以下步驟:
(可選)CloudMonitor建立警示連絡人:建立警示連絡人,接收系統健康狀態和效能指標的警示資訊。
提前建立好同名應用:手動建立應用,確保其名稱和開源中AppName一致。
從自建XXL-JOB匯出資訊:從自建的XXL-JOB系統中匯出任務資訊和配置。
匯入到阿里雲XXL-JOB:任務資訊和配置匯入阿里雲的XXL-JOB,實現任務資訊和配置資訊的遷移及管理。
重新部署應用:完成任務匯入後,將XXL-JOB應用的重新部署,接入阿里雲XXL-JOB平台,確保應用能夠接入並正常運行。
步驟一:(可選)CloudMonitor建立警示連絡人
如果您已經有云監控警示連絡人,則可跳過該步驟。
登入CloudMonitor警示連絡人頁面,建立連絡人,填寫姓名、警示通知服務的地區、配置警示資訊(支援手機、郵箱、DingTalk、飛書、企微和Webhook)。

建立完成後,需要點擊啟用才能使用,如下:

步驟二:提前建立好同名應用
登入MSE XXL-JOB控制台,並在頂部功能表列選擇地區。
進入指定XXL-JOB執行個體,在左側導覽列,選擇應用管理,單擊建立應用。
手動建立應用,需保持和開源中的AppName一致。

步驟三:從自建XXL-JOB匯出資訊
目前支援XXL-JOB2.1.1以上所有版本。在匯出時,請選擇相應的版本進行操作。
下載匯出工具。
解壓工具包,在application.properties檔案中進行匯出配置。
說明建議把CloudMonitor建立的警示連絡人(xxl-job.alarm.users)和警示方式(xxl-job.alarm.channel)在application.properties中進行配置。
在application.properties設定檔中,配置對應xxl-job任務所在的資料庫資訊。
在application.properties設定檔中,配置對應要匯出的app-name(該步驟可選,不設定的情況下匯出所有任務分組)。

### xxl-job, datasource datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai datasource.username=root datasource.password=123456 datasource.driver-class-name=com.mysql.cj.jdbc.Driver #匯出任務過濾條件配置項 #過濾指定任務應用組app-name,多個以","分割(可選,不設定的情況下匯出所有任務分組) #xxl-job.filter.app-name=xxl-job-executor-sample1,xxl-job-executor-sample2 #過濾指定任務描述,包含指定字串(可選) #xxl-job.filter.job-desc=test #過濾指定任務作者資訊,包含指定字串 (可選) #xxl-job.filter.author=test #過濾指定觸發狀態的任務配置,不配置時匯出所有狀態任務(可選) #xxl-job.filter.trigger-status=0 #分頁讀取:按任務id排序,讀取任務的啟始位置,預設0(可選) #xxl-job.filter.page-start=0 #分頁讀取:按任務id排序,讀取任務的啟始位置後多少行記錄,預設無限大(可選) #xxl-job.filter.page-size=10 #匯出後任務預設狀態值,0:禁用, 1:啟用,預設為任務原始狀態 (可選) #xxl-job.default.job-status=0 #任務警示連絡人CloudMonitor名字,多個以","分割 (可選) #xxl-job.alarm.users=張三,李四 #任務警示聯絡通道,sms:簡訊, mail:郵件, phone:電話, webhook:DingTalk/飛書/企業微信,多個以","分割(可選) #xxl-job.alarm.channel=sms,mail執行
./start.sh $version命令運行匯出操作。若不傳入version,預設執行2.2.0版本。重要如果使用的是2.1.1或者2.1.2版本,也可以使用2.2.0版本匯出。
# sh start.sh 預設執行2.2.0版本 sh start.sh 2.3.0
匯出操作完成後,在目前的目錄下獲得 xxljob_version_*******.json的任務設定檔(僅Bean模式的任務配置資訊)。

以2.2.0版本為例,匯出格式如下:
最外層結構包括version、type、kind、content等欄位,其中content為匯出的具體任務內容。
在content中,以應用app進行劃分,分別匯出各應用下的所有任務;其中每一個元素包括appName和jobConfigInfo兩個欄位。
jobConfigInfo是一個數群組類型,其中包括在對應應用下的任務資訊列表,任務資訊欄位包括name、jobType、timeConfig等。
步驟四:匯入到阿里雲XXL-JOB
將匯出後的 JSON 檔案直接上傳至阿里雲XXL-JOB,即可輕鬆完成批量任務的匯入。
登入MSE XXL-JOB控制台,並在頂部功能表列選擇地區。進入指定XXL-JOB執行個體,在左側導覽列,選擇任務管理,單擊匯入任務。

匯入任務表單選項描述:
相同任務:預設為覆蓋,即當匯入的任務在系統中已存在相同任務名時,直接覆蓋原有任務的欄位資訊;若選擇跳過,則跳過已存在的任務,不進行操作。
是否自動建立應用:預設是,即當匯入任務時,若json檔案中的應用在系統中不存在,則自動建立該應用,並將該應用下的所有任務匯入;若選擇否,若系統中不存在對應的應用,則json檔案中該應用下的所有任務都不會匯入。
選擇匯出的任務設定檔執行匯入,即可完成XXL-JOB任務配置資訊至阿里雲XXL-JOB任務配置資訊同步。
步驟五:重新部署應用
根據您當前使用的 xxl-job-core 用戶端版本,請選擇對應的重啟步驟。
2.1.1及以上版本
完全相容xxl-job-core 用戶端版本2.1.1及以上版本的用戶端協議,只需要通過-D參數重啟應用即可,步驟如下:
在左側導覽列的應用管理頁面。單擊目標應用操作列下的接入配置。

選擇接入方式2:通過XXL-JOB重啟參數,為應用增加
-D參數後,重啟應用。
接入成功後,在目標執行個體左側導覽列的應用管理頁面,可以看到執行器數量。

2.1.0版本
無需修改任何代碼,僅需替換依賴,將pom.xml中的com.xuxueli:xxl-job-core依賴替換為2.1.2即可,業務代碼可以完全相容。替換完成後,請按照2.1.1及以上版本的步驟重新部署應用。
1.x及2.0.x版本
業務代碼無需修改,僅需替換依賴並調整初始化XxlJobExecutor的內容即可,步驟如下:
修改依賴,將
xxl-job-core版本替換為2.1.2。<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.1.2</version> </dependency>將
XxlJobConfig中初始化XxlJobExecutor的部分,改為XxlJobSpringExecutor。重要@Bean中不需要添加initMethod和destroyMethod。@Bean public XxlJobSpringExecutor xxlJobExecutor() { logger.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppName(appName); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; }按照2.1.1及以上版本步驟重啟應用即可。