SpringCloudGateway路由失效問題
SpringCloudGateway整合nacos路由失效
報錯如下
java.lang.IllegalStateException: Invalid host: lb://mall_admin_service
負(fù)載均衡配置的沒有問題,對應(yīng)的服務(wù)名稱也沒有問題,斷點跟蹤了一下,在這個RouteToRequestUrlFilter類中報錯,
代碼很簡單
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()); }
在讀取配置文件的時候,沒有解析到對應(yīng)的host主機
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á)式驗證,驗證配置的服務(wù)名稱是否合法,很明顯我們的是以下劃線配置的,所以驗證失敗,URI.create創(chuàng)建的時候host解析失敗配置為空的。
也能了解了一下SpringCloudGateWay實現(xiàn)原理,所有的過濾器均以GlobalFilter 的子接口實現(xiàn),同樣是一些列的過濾器鏈。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA?2021.3?使用及idea2021.3.1激活使用方法
IDEA?全稱?IntelliJ?IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,今天通過本文給大家介紹idea2021.3.1激活及使用教程,感興趣的朋友一起看看吧2022-01-01SpringBoot + validation 接口參數(shù)校驗的思路詳解
這篇文章主要介紹了SpringBoot + validation 接口參數(shù)校驗,本文通過項目實踐+場景分析給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10SpringBoot3整合EasyExcel動態(tài)實現(xiàn)表頭重命名
這篇文章主要為大家詳細(xì)介紹了SpringBoot3整合EasyExcel如何通過WriteHandler動態(tài)實現(xiàn)表頭重命名,文中的示例代碼講解詳細(xì),有需要的可以了解下2025-03-03java并發(fā)編程專題(十一)----(JUC原子類)數(shù)組類型詳解
這篇文章主要介紹了JAVA JUC原子類 數(shù)組類型詳解的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07