SpringBoot集成xxl-job實現(xiàn)超牛的定時任務的步驟詳解
開始介紹xxl-job的使用前我們先認識一下它的作者:Xuxueli(許雪里 )
Xuxueli(許雪里 )是中國知名的開源社區(qū)貢獻者和技術專家。他是XXL-Job的創(chuàng)始人和核心開發(fā)者,也是XXL-Job的主要維護者。他在分布式任務調(diào)度領域有著豐富的經(jīng)驗和深厚的技術功底??梢钥吹絰xl-job是一個優(yōu)秀的國產(chǎn)貨!
其實市面上有很多類似的產(chǎn)品:
| 產(chǎn)品名稱 | 國產(chǎn)/國外 | 開源/商業(yè) | 主要特點 |
|---|---|---|---|
| XXL-Job | 國產(chǎn) | 開源 | 簡單易用、分布式支持、可視化監(jiān)控、擴展性強、活躍的社區(qū)支持 |
| Quartz | 國外 | 開源 | 靈活的調(diào)度配置、支持集群部署、可靠的任務調(diào)度、廣泛應用 |
| Airflow | 國外 | 開源 | 基于DAG的任務調(diào)度、可視化工作流編排、豐富的調(diào)度功能、社區(qū)活躍 |
| Azkaban | 國外 | 開源 | 分布式任務調(diào)度、可視化工作流編排、易于使用、支持多種調(diào)度方式 |
| TAC | 國產(chǎn) | 商業(yè) | 分布式任務調(diào)度、高可靠性、高性能、可視化監(jiān)控、企業(yè)級支持 |
| Elastic Job | 國產(chǎn) | 開源 | 分布式任務調(diào)度、彈性擴展、高可靠性、支持多種任務類型、與Elasticsearch、Zookeeper等集成 |
包括之前博主講的 Elastic Job
廢話不多說,現(xiàn)在我們來開始把xxl-job集成到SpringBoot(SpringCloud)中。
第一步,下載官方的倉庫
沒錯,你沒看錯,是把他的倉庫克隆下來,和其他的框架不同(在項目中引入jar包即可)
git clone https://gitee.com/xuxueli0323/xxl-job.git
gitee地址:https://gitee.com/xuxueli0323/xxl-job/tree/master

之后用idea打開是這樣的

第二步,連接mysql
xxl-job存儲的介質(zhì)是mysql,所以我們需要執(zhí)行一下sql文件來創(chuàng)建一個庫。找到官方的sql文件
/xxl-job/doc/db/tables_xxl_job.sql

在我們本地的mysql直接執(zhí)行,執(zhí)行之后會得到一個名字叫xxl-job的庫

這里一共八個表,他們的作用是:
xxl_job_user表:該表用于存儲用戶信息,包括用戶的登錄名、密碼、角色等。用于用戶的身份認證和權限管理。
xxl_job_logglue表:該表用于存儲任務的日志關聯(lián)信息,包括任務的執(zhí)行日志ID、任務的日志時間等。用于關聯(lián)任務的執(zhí)行日志和日志文件。
xxl_job_group表:該表用于存儲任務分組信息,包括分組的名稱、排序等。用于對任務進行分組管理,方便任務的分類和查找。
xxl_job_info表:該表用于存儲任務的基本信息,包括任務名稱、任務分組、任務描述、任務執(zhí)行類、任務參數(shù)等。每個任務在該表中都有一條記錄。
xxl_job_log表:該表用于存儲任務的執(zhí)行日志,包括任務的執(zhí)行結果、執(zhí)行時間、執(zhí)行耗時、執(zhí)行日志等。每次任務執(zhí)行完成后,會在該表中插入一條記錄。
xxl_job_log_report表:該表用于存儲任務的執(zhí)行報表,包括任務的執(zhí)行統(tǒng)計信息,如成功次數(shù)、失敗次數(shù)、觸發(fā)次數(shù)、調(diào)度時間等。每次任務執(zhí)行完成后,會在該表中插入或更新一條記錄。
xxl_job_registry表:該表用于存儲任務執(zhí)行器的注冊信息,包括執(zhí)行器的地址、端口、心跳時間等。每個執(zhí)行器在該表中都有一條記錄,用于任務的分配和調(diào)度。
xxl_job_lock表:該表用于存儲任務的分布式鎖信息,用于控制任務在分布式環(huán)境下的并發(fā)執(zhí)行。每個任務在該表中都有一條記錄,用于任務的加鎖和解鎖。
第三步,連接本地的mysql庫
配置文件的地址是
/xxl-job/xxl-job-admin/src/main/resources/application.properties
這里面我們直接填寫本地的數(shù)據(jù)庫信息。

第四步,啟動xxl-job-admin項目
配置好本地的mysql環(huán)境之后,選擇好項目的jdk

之后我們啟動啟動類
com.xxl.job.admin.XxlJobAdminApplication

控制臺打印如下信息則說明我們啟動完成了

訪問xxl-job的控制臺
http://localhost:8080/xxl-job-admin/toLogin 默認的用戶密碼是 admin、123456

第五步,啟動執(zhí)行器項目
執(zhí)行器(Executor)是指用于執(zhí)行具體任務的運行時組件。執(zhí)行器負責接收任務調(diào)度中心分配的任務,并按照任務的配置進行執(zhí)行??梢岳斫鉃閤xl-job-admin項目是一個注冊中心,而執(zhí)行器項目就是我們的執(zhí)行者,注冊中心負責管理統(tǒng)籌我們具體的任務,而任務里面具體做了什么事情就是執(zhí)行器項目里面的業(yè)務了。
直接使用官方的項目即可
官方的倉庫里面也給了我們一個執(zhí)行器示例項目,叫做xxl-job-executor-sample-springboot

我們也執(zhí)行啟動類即可,如下則啟動成功

這個時候我們?nèi)ピL問我們的控制臺頁面即可看到我們的執(zhí)行器項目已經(jīng)成功注冊進來了

更改注冊中心(xxl-job-admin項目)地址
我們可以看到這里的配置文件可以直接更改注冊中心的地址
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties

第六步,執(zhí)行定時任務
通過在任務執(zhí)行類的方法上添加@XxlJob注解,可以將該方法標記為一個定時任務。注解中可以設置任務的名稱、分組、CRON表達式等屬性,以及任務的參數(shù)和路由策略等。
使用項目中的示例任務
com.xxl.job.executor.service.jobhandler.SampleXxlJob#demoJobHandler

使用控制臺調(diào)用任務

之后可以看到代碼里面對應的信息被打印到日志中(示例任務是這樣的,實際根據(jù)你的業(yè)務寫代碼就可以了)


第七步,自定義xxl-job服務
xxl-job-admin(注冊中心)
在實際的工作過程中,必不能直接這樣使用,就拿我們公司來說,我們使用的是微服務的架構,我們會把xxl-job-admin項目封裝成一個微服務(當然不注冊到nacos中)。這里直接用Maven打包成一個jar包

會在和項目同級別的目錄下出現(xiàn)一個jar包

即可通過java命令運行

xxl-job-executor(執(zhí)行器)
之后我們使用具體服務的微服務里面的節(jié)點(業(yè)務包,例如用戶中心)指定xxl-job-admin項目的地址里面去使用。如果使用自定義的執(zhí)行器要保證引入以下jar包
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
就如示例項目中一樣

直接運行執(zhí)行器即可注入到xxl-job-admin(注冊中心)里面去,最后我們在控制臺統(tǒng)一管理我們的任務即可:

通過本文的介紹,我們了解了如何在Spring Boot項目中集成XXL-Job,實現(xiàn)超牛的定時任務。XXL-Job提供了強大的任務調(diào)度和管理功能,使得定時任務的開發(fā)和管理變得更加簡單和高效。
集成XXL-Job,我們可以通過配置或注解的方式定義定時任務,并靈活地設置任務的調(diào)度規(guī)則和執(zhí)行方式。無論是按照時間間隔還是時間點執(zhí)行任務,XXL-Job都能滿足我們的需求。同時,XXL-Job還提供了任務的監(jiān)控和管理功能,讓我們可以實時了解任務的執(zhí)行情況和結果。
通過使用XXL-Job,我們可以輕松實現(xiàn)定時任務的自動化執(zhí)行,提高系統(tǒng)的穩(wěn)定性和可靠性。無論是在企業(yè)級應用中還是個人項目中,XXL-Job都能為我們帶來便利和效益。
XXL-Job作為一款國產(chǎn)的優(yōu)秀開源軟件,提供了強大的任務調(diào)度和管理功能,完全能夠媲美甚至超越國外同類產(chǎn)品。作為國產(chǎn)軟件的使用者和推廣者,我們應該積極擁抱國產(chǎn)軟件,為其發(fā)展壯大貢獻自己的力量。讓我們攜手努力,為國內(nèi)軟件行業(yè)的發(fā)展做出更大的貢獻!
以上就是SpringBoot集成xxl-job實現(xiàn)超牛的定時任務的步驟詳解的詳細內(nèi)容,更多關于SpringBoot xxl-job定時任務的資料請關注腳本之家其它相關文章!
相關文章
SpringCloudGateway 網(wǎng)關登錄校驗實現(xiàn)思路
文章介紹了在微服務架構中使用Spring Cloud Gateway進行登錄校驗的方法,通過在網(wǎng)關層面進行登錄校驗,并將用戶信息通過請求頭傳遞給下游微服務,解決了每個微服務都需要獨立進行登錄校驗的問題,此外,還討論了如何在微服務之間傳遞用戶信息2024-11-11
intellij idea中spring boot properties文件不能自動提示問題解決
這篇文章主要介紹了intellij idea中spring boot properties文件不能自動提示問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02
SpringBoot?基于?MongoTemplate?的工具類過程詳解
MongoDB是一個高性能,開源,無模式的文檔型數(shù)據(jù)庫,是當前NoSql數(shù)據(jù)庫中比較熱門的一種,這篇文章主要介紹了SpringBoot基于MongoTemplate的工具類,需要的朋友可以參考下2023-09-09
Spring?cloud如何實現(xiàn)FeignClient指定Zone調(diào)用
這篇文章主要介紹了Spring?cloud如何實現(xiàn)FeignClient指定Zone調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

