SpringCloudGateway路由失效問(wèn)題
SpringCloudGateway整合nacos路由失效
報(bào)錯(cuò)如下
java.lang.IllegalStateException: Invalid host: lb://mall_admin_service
負(fù)載均衡配置的沒(méi)有問(wèn)題,對(duì)應(yīng)的服務(wù)名稱(chēng)也沒(méi)有問(wèn)題,斷點(diǎn)跟蹤了一下,在這個(gè)RouteToRequestUrlFilter類(lèi)中報(bào)錯(cuò),
代碼很簡(jiǎn)單
if ("lb".equalsIgnoreCase(routeUri.getScheme()) && routeUri.getHost() == null) { // Load balanced URIs should always have a host. If the host is null it is // most // likely because the host name was invalid (for example included an // underscore) throw new IllegalStateException("Invalid host: " + routeUri.toString()); }
在讀取配置文件的時(shí)候,沒(méi)有解析到對(duì)應(yīng)的host主機(jī)
private static final String SCHEME_REGEX = "[a-zA-Z]([a-zA-Z]|\\d|\\+|\\.|-)*:.*"; static final Pattern schemePattern = Pattern.compile(SCHEME_REGEX); // 部分代碼截取 if (hasAnotherScheme(routeUri)) { // this is a special url, save scheme to special attribute // replace routeUri with schemeSpecificPart exchange.getAttributes().put(GATEWAY_SCHEME_PREFIX_ATTR, routeUri.getScheme()); routeUri = URI.create(routeUri.getSchemeSpecificPart()); }
這里包含了一段正則表達(dá)式驗(yàn)證,驗(yàn)證配置的服務(wù)名稱(chēng)是否合法,很明顯我們的是以下劃線(xiàn)配置的,所以驗(yàn)證失敗,URI.create創(chuàng)建的時(shí)候host解析失敗配置為空的。
也能了解了一下SpringCloudGateWay實(shí)現(xiàn)原理,所有的過(guò)濾器均以GlobalFilter 的子接口實(shí)現(xiàn),同樣是一些列的過(guò)濾器鏈。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA?2021.3?使用及idea2021.3.1激活使用方法
IDEA?全稱(chēng)?IntelliJ?IDEA,是java語(yǔ)言開(kāi)發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開(kāi)發(fā)工具之一,今天通過(guò)本文給大家介紹idea2021.3.1激活及使用教程,感興趣的朋友一起看看吧2022-01-01SpringBoot + validation 接口參數(shù)校驗(yàn)的思路詳解
這篇文章主要介紹了SpringBoot + validation 接口參數(shù)校驗(yàn),本文通過(guò)項(xiàng)目實(shí)踐+場(chǎng)景分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10SpringBoot打印詳細(xì)啟動(dòng)異常信息
這篇文章主要介紹了SpringBoot打印詳細(xì)啟動(dòng)異常信息,本文包含了詳細(xì)的過(guò)程解析與案例,概要的說(shuō)明了如何去使用打印啟動(dòng)異常信息,需要的朋友可以參考下2021-06-06SpringBoot3整合EasyExcel動(dòng)態(tài)實(shí)現(xiàn)表頭重命名
這篇文章主要為大家詳細(xì)介紹了SpringBoot3整合EasyExcel如何通過(guò)WriteHandler動(dòng)態(tài)實(shí)現(xiàn)表頭重命名,文中的示例代碼講解詳細(xì),有需要的可以了解下2025-03-03java并發(fā)編程專(zhuān)題(十一)----(JUC原子類(lèi))數(shù)組類(lèi)型詳解
這篇文章主要介紹了JAVA JUC原子類(lèi) 數(shù)組類(lèi)型詳解的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07