SpringBoot部署xxl-job方法詳細(xì)講解
部署xxl-job
K8S 部署 xxl-job 參考文檔:http://m.fzitv.net/article/252770.htm
SpringBoot配置
maven 配置
pom 文件添加依賴
<!--xxl-job依賴-->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
application.yaml
添加參數(shù)
- addresses:調(diào)度中心部署跟地址,如調(diào)度中心集群部署存在多個(gè)地址則用逗號(hào)分隔,執(zhí)行器將會(huì)使用該地址進(jìn)行"執(zhí)行器心跳注冊(cè)"和"任務(wù)結(jié)果回調(diào)"
- appname:執(zhí)行器的名稱,后面配置 xxl-job-admin 要用
- ip:ip地址
- port:對(duì)外暴露的端口號(hào),注意,如果配置多個(gè)執(zhí)行器時(shí),防止端口沖突
- logpath: 執(zhí)行器運(yùn)行日志文件存儲(chǔ)的磁盤位置,需要對(duì)該路徑擁有讀寫權(quán)限
- logretentiondays: 執(zhí)行器Log文件定期清理功能,指定日志保存天數(shù),日志文件過期自動(dòng)刪除。限制至少保持3天,否則功能不生效;
- accessToken:執(zhí)行器通訊token[選填]:非空時(shí)啟動(dòng)
xxl:
job:
admin:
addresses: http://192.168.140.1:8080/xxl-job-admin
executor:
appname: demo-feng-executor
ip:
port: 9997
logpath: /home/applogs/xxl-job/jobhandler
logretentiondays: -1
accessToken:
配置 XxlJobConfig
- 引入 application.yaml 配置的參數(shù)
- 注冊(cè) XxlJobSpringExecutor
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@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
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
XxlJobSpringExecutor
這里聊一下 XxlJobSpringExecutor,不想多了解的可以跳過
afterSingletonsInstantiated 函數(shù)
- this.initJobHandlerMethodRepository(applicationContext):初始化 JobHandler,就是找到帶有注解 @XxlJob 的 Job ,進(jìn)行注冊(cè)
- GlueFactory.refreshInstance(1):刷新GlueFactory, 這里type 為 0/1,1 就是說明使用的是Spring 框架
- super.start():調(diào)用父類start() 方法,核心邏輯
public void afterSingletonsInstantiated() {
this.initJobHandlerMethodRepository(applicationContext);
GlueFactory.refreshInstance(1);
try {
super.start();
} catch (Exception var2) {
throw new RuntimeException(var2);
}
}
start函數(shù)
- initLogPath:初始化log路徑,沒有給定,默認(rèn)是 /data/applogs/xxl-job/jobhandler
- initAdminBizList:初始化 invoker, admin-client,這里就是給定的 admin server 端地址,一個(gè)或者多個(gè),封裝成 AdminBizClient 對(duì)象,放在adminBizList list里面,以便后面的回調(diào)、注冊(cè)、移除等操作
- JobLogFileCleanThread.getInstance().start:初始化 日志 清理線程,定時(shí)清理
- TriggerCallbackThread.getInstance().start():初始化回調(diào)線程
- initEmbedServer:初始化 executor-server
public void start() throws Exception {
XxlJobFileAppender.initLogPath(this.logPath);
this.initAdminBizList(this.adminAddresses, this.accessToken);
JobLogFileCleanThread.getInstance().start((long)this.logRetentionDays);
TriggerCallbackThread.getInstance().start();
this.initEmbedServer(this.address, this.ip, this.port, this.appname, this.accessToken);
}
新建執(zhí)行任務(wù)
- MyTask 為任務(wù)名
- 注解 @XxlJob 會(huì)被 spring 找到,起名需要注意,后面配置 xxl-job-admin 要用到
- 函數(shù)里可以自定義需要執(zhí)行的內(nèi)容
@Slf4j
@Component
public class MyTask {
@XxlJob("fengDemoTask")
private void task() {
log.info("成功調(diào)用demo任務(wù)");
}
}配置xxl-job-admin
執(zhí)行器管理
點(diǎn)擊 “新增”

- appname:對(duì)應(yīng) application.yaml 配置的 xxl.job.executor.appname
- 名稱:自定義中文名,在任務(wù)管理會(huì)顯示
- 注冊(cè)方式:建議使用手動(dòng)
- 機(jī)器地址:服務(wù)運(yùn)行的 ip + 端口,端口為 application.yaml 配置的 xxl.job.executor.port

任務(wù)管理
選擇剛剛執(zhí)行器,點(diǎn)擊 “新增”

- 任務(wù)描述:自定義
- 負(fù)責(zé)人:自定義
- 調(diào)度類型:建議選擇 CRON
- Cron:表達(dá)式參考文章,傳送門
- 運(yùn)行模式:BEAN
- JobHandler:注解 @XxlJob 的名稱
- 路由策略:默認(rèn)是第一個(gè),如果配置了多個(gè)需要同時(shí)調(diào)度,可以選擇分片廣播

編輯任務(wù)狀態(tài)

到此這篇關(guān)于SpringBoot部署xxl-job方法詳細(xì)講解的文章就介紹到這了,更多相關(guān)SpringBoot部署xxl-job內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot整合 xxl-job及使用步驟
- springboot整合 xxl-job的項(xiàng)目實(shí)踐
- SpringBoot集成xxl-job實(shí)現(xiàn)超牛的定時(shí)任務(wù)的步驟詳解
- springboot整合xxl-job的實(shí)現(xiàn)示例
- xxl-job的部署及springboot集成使用示例詳解
- springboot整合xxl-job實(shí)現(xiàn)分布式定時(shí)任務(wù)的過程
- springboot整合xxl-job的示例代碼
- SpringBoot整合Xxl-job實(shí)現(xiàn)定時(shí)任務(wù)的全過程
- Springboot整合xxl-job實(shí)現(xiàn)動(dòng)態(tài)傳參
相關(guān)文章
Java web實(shí)現(xiàn)賬號(hào)單一登錄,防止同一賬號(hào)重復(fù)登錄(踢人效果)
這篇文章主要介紹了Java web實(shí)現(xiàn)賬號(hào)單一登錄,防止同一賬號(hào)重復(fù)登錄,有點(diǎn)類似于qq登錄踢人效果,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
SpringBoot使用?Sleuth?進(jìn)行分布式跟蹤的過程分析
Spring Boot Sleuth是一個(gè)分布式跟蹤解決方案,它可以幫助您在分布式系統(tǒng)中跟蹤請(qǐng)求并分析性能問題,Spring Boot Sleuth是Spring Cloud的一部分,它提供了分布式跟蹤的功能,本文將介紹如何在Spring Boot應(yīng)用程序中使用Sleuth進(jìn)行分布式跟蹤,感興趣的朋友一起看看吧2023-10-10
Spring Boot定時(shí)器創(chuàng)建及使用解析
這篇文章主要介紹了Spring Boot定時(shí)器創(chuàng)建及使用解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
SpringBoot如何解析應(yīng)用參數(shù)args
文章主要介紹了SpringBoot啟動(dòng)過程中如何解析`main`函數(shù)中的參數(shù)`args`,包括如何解析命令行參數(shù)、訪問選項(xiàng)參數(shù)和非選項(xiàng)參數(shù),接著,介紹了`ApplicationArguments`接口及其方法,感興趣的朋友跟隨小編一起看看吧2024-11-11
解決報(bào)錯(cuò):java.lang.IllegalStateException: Failed to&nb
在項(xiàng)目開發(fā)中,可能會(huì)遇到Elasticsearch啟動(dòng)報(bào)錯(cuò)的問題,原因可能包括版本不一致、端口配置錯(cuò)誤、配置文件不匹配及服務(wù)未啟動(dòng)等,解決方法包括檢查進(jìn)程、重啟服務(wù)等,這些經(jīng)驗(yàn)可以幫助開發(fā)者快速定位問題并解決,保證項(xiàng)目順利運(yùn)行2024-10-10
Javas使用Redlock實(shí)現(xiàn)分布式鎖過程解析
這篇文章主要介紹了Javas使用Redlock實(shí)現(xiàn)分布式鎖過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
SpringBoot集成RbbitMQ隊(duì)列踩坑記錄
這篇文章主要介紹了SpringBoot集成RbbitMQ隊(duì)列踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04

