XXL-Job端口額外占用問題的解決方法小結(jié)
1. 前言
最近博主在Spring整合XXL-JOB到項(xiàng)目時(shí)發(fā)現(xiàn)了個(gè)問題,注冊(cè)執(zhí)行器需要額外占用端口,也就是我們每啟動(dòng)一個(gè)程序,除了程序本身的API端口外,還需要額外開放一個(gè)執(zhí)行器端口。
這樣看起來沒啥,但是如果放到Docker容器中,用戶不顯示指定執(zhí)行器端口的話,默認(rèn)占用9999端口,假如我想啟動(dòng)兩個(gè)實(shí)例,那么必定會(huì)發(fā)生端口沖突,也就是我必須為每個(gè)實(shí)例指定執(zhí)行器端口,假如我有10個(gè)實(shí)例,那也太麻煩了的吧,然后去xxl-job github查看,發(fā)現(xiàn)issue都已經(jīng)1.2k個(gè)了,這個(gè)問題也老早就有人提了Issue,可是作者不太理人不管事哈哈(可能生活太忙維護(hù)不過來啦)
2. 問題解決
2.1. 下載源碼
我這里找到一位老哥修改的克隆版本,移除了netty組件,使執(zhí)行器端口與Springboot的web端口一致
和官方源碼一樣,分為三部分代碼,只是修改了部分源碼
2.2. 啟動(dòng)admin服務(wù)器
我們接下來修改xxl-job-admin的配置文件application.properties,修改admin服務(wù)端端口
修改訪問密鑰,這個(gè)我們?cè)诒徽{(diào)度方會(huì)使用到
修改數(shù)據(jù)源(數(shù)據(jù)庫還是沒變哈,可參考我以前部署xxl-job的文章)
配置完以上信息就可以啟動(dòng)admin服務(wù)端啦
2.3. 項(xiàng)目引入core組件
修改core項(xiàng)目的pom文件 groupId配置,方便我們后續(xù)在項(xiàng)目中引用
接下來我們重新打包c(diǎn)ore項(xiàng)目,并install到我們本地倉庫
等待core項(xiàng)目install完成后,我們就可以在自己的項(xiàng)目中使用修改后的xxl-job core組件了
在自己項(xiàng)目application.yml中添加如下配置,端口設(shè)置為springboot服務(wù)端口
xxl: job: # 驗(yàn)證信息 官網(wǎng)Bug https://github.com/xuxueli/xxl-job/issues/1951 accessToken: 123123123 # 注冊(cè)地址 admin: addresses: http://127.0.0.1:9090/xxl-job-admin # 注冊(cè)執(zhí)行器 executor: # 執(zhí)行器注冊(cè) [選填]:優(yōu)先使用該配置作為注冊(cè)地址,為空時(shí)使用內(nèi)嵌服務(wù) ”IP:PORT“ 作為注冊(cè)地址。從而更靈活的支持容器類型執(zhí)行器動(dòng)態(tài)IP和動(dòng)態(tài)映射端口問題。 address: appname: lucky-draw-handler # 執(zhí)行器IP 配置為本機(jī)IP [選填]:默認(rèn)為空表示自動(dòng)獲取IP,多網(wǎng)卡時(shí)可手動(dòng)設(shè)置指定IP,該IP不會(huì)綁定Host僅作為通訊實(shí)用;地址信息用于 "執(zhí)行器注冊(cè)" 和 "調(diào)度中心請(qǐng)求并觸發(fā)任務(wù)"; ip: # 執(zhí)行器端口號(hào) [選填]:小于等于0則自動(dòng)獲??;默認(rèn)端口為9999,單機(jī)部署多個(gè)執(zhí)行器時(shí),注意要配置不同執(zhí)行器端口; port: ${server.port} # 執(zhí)行器運(yùn)行日志文件存儲(chǔ)磁盤路徑 [選填] :需要對(duì)該路徑擁有讀寫權(quán)限;為空則使用默認(rèn)路徑; logpath: ./logs # 執(zhí)行器日志文件保存天數(shù) [選填] : 過期日志自動(dòng)清理, 限制值大于等于3時(shí)生效; 否則, 如-1, 關(guān)閉自動(dòng)清理功能; logretentiondays: 30
新增配置類
@Configuration public class XxlJobConfig { @Value("${xxl.job.admin.addresses}") private String adminAddresses; @Value("${xxl.job.accessToken}") private String accessToken; @Value("${xxl.job.executor.appname}") private String appname; @Value("${xxl.job.executor.address}") private String address; @Value("${xxl.job.executor.ip}") private String ip; @Value("${xxl.job.executor.port}") private int port; @Value("${xxl.job.executor.logpath}") private String logPath; @Value("${xxl.job.executor.logretentiondays}") private int logRetentionDays; @Bean public XxlJobSpringExecutor xxlJobExecutor() { XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppname(appname); xxlJobSpringExecutor.setAddress(address); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; } }
啟動(dòng)項(xiàng)目即可發(fā)現(xiàn)自己執(zhí)行器成功注冊(cè)到了admin服務(wù)端
3. 總結(jié)
到此就實(shí)現(xiàn)了xxl-job走spring的接口,不額外占用端口,好處顯而易見,但也有一點(diǎn)壞處:導(dǎo)致定時(shí)任務(wù)調(diào)度共用了處理web請(qǐng)求的線程池。不過個(gè)人認(rèn)為還是利大于弊的,具體還是得看自己的選擇吧!
以上就是XXL-Job端口額外占用問題的解決方法小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于XXL-Job端口額外占用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
2024.1.2 安裝JDK和Eclipse并配置java編譯環(huán)境的過程
這篇文章主要介紹了2024.1.2 安裝JDK和Eclipse并配置java編譯環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩過的坑
IDEA旗艦版可以直接創(chuàng)建Spring MVC項(xiàng)目,但創(chuàng)建后的項(xiàng)目并不是直接就可以運(yùn)行,還需要進(jìn)行一些配置。這篇文章主要介紹了Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩坑記 ,需要的朋友可以參考下2020-03-03Spring事務(wù)執(zhí)行流程及如何創(chuàng)建事務(wù)
這篇文章主要介紹了Spring事務(wù)執(zhí)行流程及如何創(chuàng)建事務(wù),幫助大家更好的理解和學(xué)習(xí)使用spring框架,感興趣的朋友可以了解下2021-03-03springboot中shiro使用自定義注解屏蔽接口鑒權(quán)實(shí)現(xiàn)
本文主要介紹了springboot中shiro使用自定義注解屏蔽接口鑒權(quán)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07