將自建XXLJOB遷移至阿里云任務調度平臺
本文將介紹如何將現有開源的XXL-JOB任務導入阿里云任務調度平臺中,無需修改任何代碼,即可完成任務的重新部署,實現高效的任務調度和管理。
視頻演示
如需將現有開源的XXL-JOB任務導入阿里云任務調度平臺中,請參見視頻演示。
方案概覽
您可以借助阿里云提供的導出工具,從開源XXL-JOB中直接導出任務配置,再導入遷移至云上實例中。大致分為以下步驟:
(可選)云監控創建報警聯系人:創建報警聯系人,接收系統健康狀態和性能指標的報警信息。
提前創建好同名應用:手動創建應用,確保其名稱和開源中AppName一致。
從自建XXL-JOB導出信息:從自建的XXL-JOB系統中導出任務信息和配置。
導入到阿里云XXL-JOB:任務信息和配置導入阿里云的XXL-JOB,實現任務信息和配置信息的遷移及管理。
重新部署應用:完成任務導入后,將XXL-JOB應用的重新部署,接入阿里云XXL-JOB平臺,確保應用能夠接入并正常運行。
步驟一:(可選)云監控創建報警聯系人
如果您已經有云監控報警聯系人,則可跳過該步驟。
登錄云監控報警聯系人頁面,創建聯系人,填寫姓名、報警通知服務的區域、配置報警信息(支持手機、郵箱、釘釘、飛書、企微和Webhook)。
創建完成后,需要點擊激活才能使用,如下:
步驟二:提前創建好同名應用
登錄XXL-JOB控制臺,并在頂部菜單欄選擇地域。
進入指定XXL-JOB實例,在左側菜單欄,選擇應用管理,單擊創建應用。
手動創建應用,需保持和開源中的AppName一致。
步驟三:從自建XXL-JOB導出信息
目前支持XXL-JOB2.2.x
、2.3.x
、2.4.x
三個版本。在導出時,請選擇相應的版本進行操作。
下載導出工具。
解壓工具包,在application.properties文件中進行導出配置。
說明建議把云監控創建的報警聯系人(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 #分頁讀?。喊慈蝿読d排序,讀取任務的啟始位置,默認0(可選) #xxl-job.filter.page-start=0 #分頁讀取:按任務id排序,讀取任務的啟始位置后多少行記錄,默認無限大(可選) #xxl-job.filter.page-size=10 #導出后任務默認狀態值,0:禁用, 1:啟用,默認為任務原始狀態 (可選) #xxl-job.default.job-status=0 #任務報警聯系人云監控名字,多個以","分割 (可選) #xxl-job.alarm.users=張三,李四 #任務報警聯系通道,sms:短信, mail:郵件, phone:電話, webhook:釘釘/飛書/企業微信,多個以","分割(可選) #xxl-job.alarm.channel=sms,mail
執行
./start.sh $version
命令運行導出操作。若不傳入version,默認執行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等。
{ "content":[ { "appName":"app2", "description":"應用分組2", "jobConfigInfo":[ { "attemptInterval":30, "contactInfoList":[ { "contactType":1, "name":"張三" }, { "contactType":1, "name":"李四" } ], "content":"{\"jobHandler\":\"failJobHandler\"}", "description":"test-job04, 負責人:cxy", "executeMode":"standalone", "jobType":"xxljob", "maxAttempt":0, "monitorConfigInfo":{ "alarmType":"CustomContacts", "sendChannel":"sms,mail", "timeout":10 }, "name":"test-job04", "parameters":"", "routeStrategy":2, "status":0, "timeConfig":{ "dataOffset":0, "timeExpression":"* * * 1 * ?", "timeType":1 } }, { "attemptInterval":30, "contactInfoList":[ { "contactType":1, "name":"張三" }, { "contactType":1, "name":"李四" } ], "content":"{\"jobHandler\":\"shardingJobHandler\"}", "description":"test-job03, 負責人:cxy", "executeMode":"broadcast", "jobType":"xxljob", "maxAttempt":0, "monitorConfigInfo":{ "alarmType":"CustomContacts", "sendChannel":"sms,mail", "timeout":0 }, "name":"test-job03", "parameters":"", "routeStrategy":8, "status":1, "timeConfig":{ "dataOffset":0, "timeExpression":"* * 18 * * ?", "timeType":1 } } ] } ], "kind":"SchedulerXJobs", "overwrite":true, "type":"JSON", "version":"2.0" }
步驟四:導入到阿里云XXL-JOB
將導出后的 JSON 文件直接上傳至阿里云XXL-JOB,即可輕松完成批量任務的導入。
登錄XXL-JOB控制臺,并在頂部菜單欄選擇地域。進入指定XXL-JOB實例,在左側菜單欄,選擇任務管理,單擊導入任務。
導入任務表單選項描述:
相同任務:默認為覆蓋,即當導入的任務在系統中已存在相同任務名時,直接覆蓋原有任務的字段信息;若選擇跳過,則跳過已存在的任務,不進行操作。
是否自動創建應用:默認是,即當導入任務時,若json文件中的應用在系統中不存在,則自動創建該應用,并將該應用下的所有任務導入;若選擇否,若系統中不存在對應的應用,則json文件中該應用下的所有任務都不會導入。
選擇導出的任務配置文件執行導入,即可完成XXL-JOB任務配置信息至阿里云XXL-JOB任務配置信息同步。
步驟五:重新部署應用
在左側導航欄的應用管理頁面,單擊目標應用操作列的接入配置。
按照接入方式2:通過-D參數重啟應用(不需要修改代碼和配置文件),啟動XXL-JOB應用時,通過啟動命令增加
-D
參數的形式,重啟應用。接入成功后,在左側導航欄的應用管理頁面,可以看到執行器數量。