XXL-JOB
是一個輕量級分佈式任務調度平臺,開發迅速、學習簡單、輕量級、易擴展。本文演示如何使用快速SpringBoot
,搭建XXL-JOB
調度平臺。java
xxl-job
詳細介紹請移至官網mysql
xxl-job
由調度中心和執行器兩部分組成,調度中心負責任務的調度,執行器負責執行任務。調度中心後臺,支持配置任務,控制任務,查看任務運行日誌等功能。git
git clone git@github.com:xuxueli/xxl-job.gitgithub
目錄:/xxl-job/doc/db/tables_xxl_job.sqlweb
目錄:/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.propertiessql
cd /xxl-job/xxl-job\xxl-job-admin mvn clean pacakge數據庫
war
包,拷貝至tomcat
war
所在目錄:/xxl-job/xxl-job\xxl-job-admin/targettomcat
部署目錄:/apache-tomcat-9.0.12/webappsapache
tomcat
運行/apache-tomcat-9.0.12/bin目錄下的
startup.bat
centos
注意: xxl-job
版本已官網最新版本爲準
<!-- xxl-job-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>1.9.1</version> </dependency>
xxl: job: admin: ### xxl-job admin address list:調度中心部署跟地址:如調度中心集羣部署存在多個地址則用逗號分隔。執行器將會使用該地址進行"執行器心跳註冊"和"任務結果回調"。 addresses: http://127.0.0.1:8080/xxl-job-admin-1.9.1 executor: ### xxl-job executor address:執行器"AppName"和地址信息配置:AppName執行器心跳註冊分組依據;地址信息用於"調度中心請求並觸發任務"和"執行器註冊"。 ### 執行器默認端口爲9999,執行器IP默認爲空表示自動獲取IP,多網卡時可手動設置指定IP,手動設置IP時將會綁定Host。單機部署多個執行器時,注意要配置不一樣執行器端口; appName: my-xxl-job-executor ip: port: 8889 ### xxl-job log path:執行器運行日誌文件存儲的磁盤位置,須要對該路徑擁有讀寫權限 logPath: /data/applogs/xxl-job/jobhandler ### xxl-job log retention days:執行器Log文件按期清理功能,指定日誌保存天數,日誌文件過時自動刪除。限制至少保持3天,不然功能不生效; logRetentionDays: -1 ### xxl-job, access token:執行器通信TOKEN,非空時啓用 accessToken: server: port: 8081
@Slf4j @Configuration public class XxlJobConfig { @Value("${xxl.job.admin.addresses}") private String addresses; @Value("${xxl.job.executor.appName}") private String appName; @Value("${xxl.job.executor.ip}") private String ip; @Value("${xxl.job.executor.port}") private int port; @Value("${xxl.job.accessToken}") private String accessToken; @Value("${xxl.job.executor.logPath}") private String logPath; @Value("${xxl.job.executor.logRetentionDays}") private int logRetentionDays; @Bean(initMethod = "start", destroyMethod = "destroy") public XxlJobExecutor xxlJobExecutor() { log.info(">>>>>>>>>>> xxl-job config init."); XxlJobExecutor xxlJobExecutor = new XxlJobExecutor(); xxlJobExecutor.setAdminAddresses(addresses); xxlJobExecutor.setAppName(appName); xxlJobExecutor.setIp(ip); xxlJobExecutor.setPort(port); xxlJobExecutor.setAccessToken(accessToken); xxlJobExecutor.setLogPath(logPath); xxlJobExecutor.setLogRetentionDays(logRetentionDays); return xxlJobExecutor; } }
/** * 任務Handler示例(Bean模式) * */ @JobHandler(value="demoJobHandler") @Component public class DemoJobHandler extends IJobHandler { @Override public ReturnT<String> execute(String param) { XxlJobLogger.log("XXL-JOB, Hello World."); return SUCCESS; } }
執行器會定時到調度中心註冊,上圖說明註冊成功;任務調度中心執行管理菜單中能查詢全部註冊的執行器。
/** * 分片廣播任務 */ @JobHandler(value="shardingJobHandler") @Component public class ShardingJobHandler extends IJobHandler { @Override public ReturnT<String> execute(String param) { // 分片參數 ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo(); XxlJobLogger.log("分片參數:當前分片序號 = {0}, 總分片數 = {1}", shardingVO.getIndex(), shardingVO.getTotal()); // 業務邏輯 for (int i = 0; i < shardingVO.getTotal(); i++) { if (i == shardingVO.getIndex()) { XxlJobLogger.log("第 {0} 片, 命中分片開始處理", i); } else { XxlJobLogger.log("第 {0} 片, 忽略", i); } } return SUCCESS; } }
虛擬機中代碼經過git同步更新
注意:須要修改虛擬機中,調度中心配置文件,調度中心地址改成本地IP
注意:確保本地與虛擬機的網絡環境,保證http協議暢通
編譯打包虛擬機代碼:mvn clean package
進入目錄:/Chapter3-1-4/target
啓動服務:java -jar Chapter3-1-4-1.0-SNAPSHOT.jar
啓動後,檢查調度中心執行器是否註冊成功
![6](/SpringBoot基礎教程3-1-4 xxl-job快速整合/6.png)
工欲善其事必先利其器,擁抱開源,解放雙手,本文源碼。
歡迎關注博主公衆號,第一時間推送最新文章