日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
分布式任務(wù)調(diào)度XXL-Job,賊好用,體驗(yàn)一把

背景

為了能夠更加靈活的控制定時(shí)任務(wù),最近在項(xiàng)目中開(kāi)始推行定時(shí)任務(wù)調(diào)度系統(tǒng),跟不少大廠朋友交流之后,發(fā)現(xiàn)XXL-Job市場(chǎng)還是挺廣的,功能強(qiáng)大,定為選擇。

目前創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、永修網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

再加上XXL-Job是基于Spring Boot的開(kāi)源項(xiàng)目,二次開(kāi)發(fā)非常容易,所以就選定了XXL-Job。這篇文章就帶大家領(lǐng)略一下XXL-Job的魅力,可以不用,但不可不知道。

XXL-Job簡(jiǎn)介

訪問(wèn)官方網(wǎng)站會(huì)看到XXL-Job各類(lèi)特性介紹,這里總結(jié)一下就是:學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展、動(dòng)態(tài)生效、調(diào)度中心HA、執(zhí)行器HA、彈性擴(kuò)容縮容、路由策略、故障轉(zhuǎn)移、阻塞處理策略、任務(wù)超時(shí)控制、任務(wù)失敗重試、任務(wù)失敗告警、分片廣播任務(wù)、動(dòng)態(tài)分片、事件觸發(fā)等很多特性。

上面介紹了優(yōu)點(diǎn),而個(gè)人在實(shí)踐和使用的過(guò)程中發(fā)現(xiàn)代碼的規(guī)范性、代碼質(zhì)量等都有待提高和規(guī)范。具有二次開(kāi)發(fā)能力的我們,可以對(duì)配置文件環(huán)境隔離、日志配置等進(jìn)行定制化處理。提升空間還是有的。

下面就來(lái)具體實(shí)踐、體驗(yàn)一下。

源碼下載

可通過(guò)GitHub或Gitee上下載源碼:

GitHub地址:http://github.com/xuxueli/xxl-job

Gitee地址:https://gitee.com/xuxueli0323/xxl-job

這里通過(guò)Gitee下載:

git clone git@gitee.com:xuxueli0323/xxl-job.git

下載完成,用IDE打開(kāi)項(xiàng)目結(jié)構(gòu):

xxl-job

直接拉取代碼是主干代碼,可看到版本是2.3.1-SNAPSHOT,原則上還是建議使用穩(wěn)定版本。此時(shí)可以通過(guò)git命令從主干切換到穩(wěn)定版本2.3.0或通過(guò)IDE提供的版本工具進(jìn)行切換。

這里通過(guò)git命令切換到遠(yuǎn)程分支:

git checkout -b 2.3.0 origin/2.3.0

項(xiàng)目結(jié)構(gòu)項(xiàng)目源碼結(jié)構(gòu)如下:

  • xxl-job-admin:調(diào)度中心
  • xxl-job-core:公共依賴
  • xxl-job-executor-samples:執(zhí)行器Sample示例;
  • xxl-job-executor-sample-springboot:Springboot版本,通過(guò)Springboot管理執(zhí)行器,推薦這種方式;
  • xxl-job-executor-sample-frameless:無(wú)框架版本;

部署時(shí),調(diào)度中心單獨(dú)部署,samples中代碼可集成到項(xiàng)目中進(jìn)行使用。

初始化表結(jié)構(gòu)

找到項(xiàng)目源碼中doc/db目錄下的tables_xxl_job.sql,用來(lái)初始化數(shù)據(jù)庫(kù)表結(jié)構(gòu)。

會(huì)創(chuàng)建一個(gè)名為xxl_job的數(shù)據(jù)庫(kù),并且包含了8張以xxl_job開(kāi)頭的表

xxl_job表

修改項(xiàng)目配置

打開(kāi)xxl-job-admin項(xiàng)目中的application.properties文件進(jìn)行后臺(tái)的配置,比如配置數(shù)據(jù)庫(kù)連接、配置發(fā)送郵件地址等信息。

此時(shí)你應(yīng)該也想到,需要把整個(gè)項(xiàng)目納入到自己的代碼倉(cāng)庫(kù),進(jìn)行配置修改、環(huán)境隔離以及進(jìn)行部分二開(kāi)工作。

筆者進(jìn)行了簡(jiǎn)單的改造,將原本的application.properties配置文件進(jìn)行了拆分:

  • application.properties
  • application-dev.properties
  • application-prod.properties
  • application-test.properties

在application.properties中指定不同環(huán)境采用不同的配置文件信息,方便自動(dòng)化發(fā)布。

spring.profiles.active=dev

打包發(fā)布

此時(shí)可以直接在IDE中執(zhí)行Spring Boot的main方法來(lái)啟動(dòng)項(xiàng)目,看看效果,也可以打成jar包進(jìn)行發(fā)布。使用過(guò)Spring Boot的朋友們應(yīng)該都知道如何去操作。

這里直接啟動(dòng),會(huì)發(fā)現(xiàn)日志文件找不到,無(wú)法啟動(dòng)程序。原因在logback.xml中的配置:

最簡(jiǎn)單的操作是將該路徑改為本地存在的目錄。但筆者認(rèn)為將日志路徑寫(xiě)死在xml文件中并不優(yōu)化,進(jìn)一步二開(kāi)將其提取到配置文件中。


不同環(huán)境的配置文件添加路徑配置:

log.path=/Users/zzs/temp/xxl-job-admin.log

修改之后,啟動(dòng)完畢。

訪問(wèn):http://localhost:8888/xxl-job-admin

這里筆者將端口進(jìn)行了修改。默認(rèn)的用戶名為:admin,密碼為:123456。

登錄成功,主界面顯示如下:

xxl-job-admin

關(guān)于admin的部署已經(jīng)完成,接下來(lái)需要先編寫(xiě)執(zhí)行器的代碼,然后再通過(guò)admin進(jìn)行調(diào)用。

執(zhí)行器編寫(xiě)及部署

執(zhí)行器代碼可直接參考xxl-job-executor-sample-springboot中的實(shí)例進(jìn)行編寫(xiě)。

本質(zhì)上就是Spring Boot項(xiàng)目中引入了xxl-job的依賴:


com.xuxueli
xxl-job-core
${project.parent.version}

然后通過(guò)配置類(lèi)對(duì)XxlJobSpringExecutor進(jìn)行初始化,剩下的就是基于@XxlJob來(lái)定義定時(shí)任務(wù)的JobHandler。

如下便新定義了一個(gè)JobHandler:

@Component
public class MyXxlJob {

@XxlJob("helloXxlJobHandler")
public void helloXxlJobHandler() {
String jobParam = XxlJobHelper.getJobParam();
System.out.println("jobParam=" + jobParam);
System.out.println("Hello XXL-Job");
}
}

在啟動(dòng)之前,先對(duì)xxl-job-executor-sample-springboot的配置文件進(jìn)行修改,除了前面提到的日志文件,還涉及到xxl.job.admin.addresses,修改為admin的地址:

xxl.job.admin.addresses=http://localhost:8888/xxl-job-admin

執(zhí)行main方法,啟動(dòng)程序。此時(shí),再回到admin管理頁(yè)面的任務(wù)管理菜單:

任務(wù)管理

點(diǎn)擊右上角新增任務(wù):

新增任務(wù)

按照參數(shù)說(shuō)明配置完成,結(jié)果如下:

執(zhí)行

執(zhí)行完成 ,可在調(diào)度日志中查看到執(zhí)行的歷史。

調(diào)度日志

看看控制臺(tái):

jobParam=hello,xxl-job
Hello XXL-Job

程序被成功調(diào)用,同時(shí)也獲取到了admin傳遞的參數(shù)。

此后,該定時(shí)任務(wù)的執(zhí)行頻次、執(zhí)行規(guī)則,甚至執(zhí)行時(shí)傳遞的參數(shù)都可以通過(guò)admin管理平臺(tái)進(jìn)行操作。

小結(jié)

經(jīng)過(guò)本文體驗(yàn)了一把XXL-Job,感覺(jué)怎么樣?比在項(xiàng)目中寫(xiě)死定時(shí)任務(wù)或在數(shù)據(jù)庫(kù)中配置靈活多了,有管理頁(yè)面,有執(zhí)行歷史,可以靈活配置,甚至可以傳遞調(diào)用參數(shù)等等功能都是非常實(shí)用的。建議你也嘗試一把。


文章名稱(chēng):分布式任務(wù)調(diào)度XXL-Job,賊好用,體驗(yàn)一把
URL地址:http://m.5511xx.com/article/dhdjesi.html