SpringBoot部署xxl-job方法詳細(xì)講解
部署xxl-job
K8S 部署 xxl-job 參考文檔:http://www.dbjr.com.cn/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ù)管理會顯示
- 注冊方式:建議使用手動
- 機器地址:服務(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)文章
Swagger-boostrap-ui如何配置用戶名密碼訪問
這篇文章主要介紹了Swagger-boostrap-ui如何配置用戶名密碼訪問,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05CommonMark 使用教程:將 Markdown 語法轉(zhuǎn)成 Html
這篇文章主要介紹了CommonMark 使用教程:將 Markdown 語法轉(zhuǎn)成 Html,這個技巧我們做任何網(wǎng)站都可以用到,而且非常好用。,需要的朋友可以參考下2019-06-06SpringBoot之RestTemplate在URL中轉(zhuǎn)義字符的問題
這篇文章主要介紹了SpringBoot之RestTemplate在URL中轉(zhuǎn)義字符的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06詳解eclipse中Maven工程使用Tomcat7以上插件的方法
本篇文章主要介紹了詳解eclipse中Maven工程使用Tomcat7以上插件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12