XXL-JOB分布式任務(wù)調(diào)度平臺(真·保姆級教程)
點擊關(guān)注公眾號,Java干貨及時送達??

文章來源:https://c1n.cn/L01Io
目錄
前言
xxl-job-admin 搭建
整合 SpringBoot 項目
前言
XXL-JOB 是一個輕量級分布式任務(wù)調(diào)度平臺,其核心設(shè)計目標是開發(fā)迅速、學(xué)習(xí)簡單、輕量級、易擴展?,F(xiàn)已開放源代碼并接入多家公司線上產(chǎn)品線,開箱即用。
https://gitee.com/xuxueli0323/xxl-job.git

xxl-job-admin 搭建
| 拉取代碼



| 啟動任務(wù)調(diào)度中心


賬號:admin 密碼:123456 (初始狀態(tài)下)。
| 登錄成功

到此為止,第一階段 xxl-job-admin?模塊的部署就完成啦。
整合 SpringBoot 項目

接下來就是如何整合到自己的 SpringBoot 項目中。
| 引入 maven 依賴
如下圖:

注意:此處版本要與 xxl-job-admin 中版本保持一致。
| 引入配置類
如下圖:


@Configuration
public?class?XxlJobConfig?{
????private?Logger?logger?=?LoggerFactory.getLogger(XxlJobConfig.class);
????@Value("${xxl.job.admin.addresses}")
????private?String?adminAddresses;
????@Value("${xxl.job.accessToken}")
????private?String?accessToken;
????@Value("${xxl.job.executor.appname}")
????private?String?appname;
????@Value("${xxl.job.executor.address}")
????private?String?address;
????@Value("${xxl.job.executor.ip}")
????private?String?ip;
????@Value("${xxl.job.executor.port}")
????private?int?port;
????@Value("${xxl.job.executor.logpath}")
????private?String?logPath;
????@Value("${xxl.job.executor.logretentiondays}")
????private?int?logRetentionDays;
????@Bean
????public?XxlJobSpringExecutor?xxlJobExecutor()?{
????????logger.info(">>>>>>>>>>>?xxl-job?config?init.");
????????XxlJobSpringExecutor?xxlJobSpringExecutor?=?new?XxlJobSpringExecutor();
????????xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
????????xxlJobSpringExecutor.setAppname(appname);
????????xxlJobSpringExecutor.setAddress(address);
????????xxlJobSpringExecutor.setIp(ip);
????????xxlJobSpringExecutor.setPort(port);
????????xxlJobSpringExecutor.setAccessToken(accessToken);
????????xxlJobSpringExecutor.setLogPath(logPath);
????????xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
????????return?xxlJobSpringExecutor;
????}
????/**
?????*?針對多網(wǎng)卡、容器內(nèi)部署等情況,可借助?"spring-cloud-commons"?提供的?"InetUtils"?組件靈活定制注冊IP;
?????*
?????*????? 1、引入依賴:
?????*??????????
?????*?????????????org.springframework.cloud
?????*?????????????spring-cloud-commons
?????*?????????????${version}
?????*?????????
?????*
?????*??????2、配置文件,或者容器啟動變量
?????*??????????spring.cloud.inetutils.preferred-networks:?'xxx.xxx.xxx.'
?????*
?????*??????3、獲取IP
?????*??????????String?ip_?=?inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
?????*/
}
| 修改 yml 配置文件
代碼如下:
xxl:
??job:
????admin:
??????#?調(diào)度中心部署跟地址?[選填]:如調(diào)度中心集群部署存在多個地址則用逗號分隔。
??????#?執(zhí)行器將會使用該地址進行"執(zhí)行器心跳注冊"和"任務(wù)結(jié)果回調(diào)";為空則關(guān)閉自動注冊;
??????addresses:?http://127.0.0.1:8086/xxl-job-admin
????#?執(zhí)行器通訊TOKEN [選填]:非空時啟用;
????accessToken:
????executor:
??????#?執(zhí)行器AppName [選填]:執(zhí)行器心跳注冊分組依據(jù);為空則關(guān)閉自動注冊
??????appname:?xxl-job-executor-mileage
??????#?執(zhí)行器注冊?[選填]:優(yōu)先使用該配置作為注冊地址,為空時使用內(nèi)嵌服務(wù)?”IP:PORT“?作為注冊地址。
??????#從而更靈活的支持容器類型執(zhí)行器動態(tài)IP和動態(tài)映射端口問題。
??????address:
??????#?執(zhí)行器IP [選填]:默認為空表示自動獲取IP,多網(wǎng)卡時可手動設(shè)置指定IP,該IP不會綁定Host僅作為通訊實用;
??????#?地址信息用于?"執(zhí)行器注冊"?和?"調(diào)度中心請求并觸發(fā)任務(wù)";
??????ip:
??????#?執(zhí)行器端口號?[選填]:小于等于0則自動獲??;默認端口為9999,單機部署多個執(zhí)行器時,注意要配置不同執(zhí)行器端口;
??????port:?8088
??????#?執(zhí)行器運行日志文件存儲磁盤路徑?[選填]?:需要對該路徑擁有讀寫權(quán)限;為空則使用默認路徑;
??????logpath:?/data/applogs/xxl-job/jobhandler
??????#?執(zhí)行器日志文件保存天數(shù)?[選填]?:?過期日志自動清理, 限制值大于等于3時生效;?否則, 如-1, 關(guān)閉自動清理功能;
??????logretentiondays:?30
logging:
??config:?classpath:logback.xml??????
| 編寫測試類
代碼如下:
@Component
public?class?MileageXxlJob?{
????private?static?Logger?logger?=?LoggerFactory.getLogger(SampleXxlJob.class);
????/**
?????*?1、簡單任務(wù)示例(Bean模式)
?????*/
????@XxlJob("mileageJobHandler")
????public?void?mileageJobHandler()?throws?Exception?{
????????XxlJobHelper.log("XXL-JOB,?Hello?World.");
????????for?(int?i?=?0;?i?5;?i++)?{
????????????XxlJobHelper.log("beat?at:"?+?i);
????????????System.out.println("ok");
????????????TimeUnit.SECONDS.sleep(2);
????????}
????????//?default?success
????}
}????

編寫完成后,啟動服務(wù)?。ㄗ⒁鈫禹樞?,先啟動 xxl-job-admin 模塊,再啟動您的 springboot 服務(wù))
| 任務(wù)調(diào)度中心,配置服務(wù)



注:測試選擇執(zhí)行一次即可,如需項目保持運行,選擇啟動。

到此,XXL-JOB 與 SpringBoot 的簡單整合入門教程就完成了,感謝您的查閱!
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點“在看”,關(guān)注公眾號并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
PS:因公眾號平臺更改了推送規(guī)則,如果不想錯過內(nèi)容,記得讀完點一下“在看”,加個“星標”,這樣每次新文章推送才會第一時間出現(xiàn)在你的訂閱列表里。
點“在看”支持小哈呀,謝謝啦??

