SpringBoot部署xxl-job方法詳細(xì)講解
部署xxl-job
K8S 部署 xxl-job 參考文檔:http://www.dhdzp.com/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)度中心集群部署存在多個地址則用逗號分隔,執(zhí)行器將會使用該地址進(jìn)行"執(zhí)行器心跳注冊"和"任務(wù)結(jié)果回調(diào)"
- appname:執(zhí)行器的名稱,后面配置 xxl-job-admin 要用
- ip:ip地址
- port:對外暴露的端口號,注意,如果配置多個執(zhí)行器時,防止端口沖突
- logpath: 執(zhí)行器運行日志文件存儲的磁盤位置,需要對該路徑擁有讀寫權(quán)限
- logretentiondays: 執(zhí)行器Log文件定期清理功能,指定日志保存天數(shù),日志文件過期自動刪除。限制至少保持3天,否則功能不生效;
- accessToken:執(zhí)行器通訊token[選填]:非空時啟動
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ù)
- 注冊 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)行注冊
- 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 端地址,一個或者多個,封裝成 AdminBizClient 對象,放在adminBizList list里面,以便后面的回調(diào)、注冊、移除等操作
- JobLogFileCleanThread.getInstance().start:初始化 日志 清理線程,定時清理
- 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 會被 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í)行器管理
點擊 “新增”

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

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

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

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

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

