SpringCloudGateway路由失效问题

 更新时间:2024年10月31日 14:27:12   作者:Xiao_zuo_ya  
本文主要分析了SpringCloudGateway整合nacos时路由失效的问题,作者通过断点跟踪发现在RouteToRequestUrlFilter类中报错,原因是在读取配置文件的时候,没有解析到对应的host主机,进一步发现这里包含了一段正则表达式验证,验证配置的服务名称是否合法

SpringCloudGateway整合nacos路由失效

报错如下

java.lang.IllegalStateException: Invalid host: lb://mall_admin_service

负载均衡配置的没有问题,对应的服务名称也没有问题,断点跟踪了一下,在这个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());
		}

在读取配置文件的时候,没有解析到对应的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());
		}

这里包含了一段正则表达式验证,验证配置的服务名称是否合法,很明显我们的是以下划线配置的,所以验证失败,URI.create创建的时候host解析失败配置为空的。

也能了解了一下SpringCloudGateWay实现原理,所有的过滤器均以GlobalFilter 的子接口实现,同样是一些列的过滤器链。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot+maven打war包的方法

    Spring Boot+maven打war包的方法

    这篇文章主要介绍了Spring Boot+maven打war包的方法,本文通过实例代码相结合的形式给大家介绍的非常详细,需要的朋友参考下吧
    2018-05-05
  • java List中相同的数据合并到一起

    java List中相同的数据合并到一起

    这篇文章主要介绍了java List中相同的数据合并到一起,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 完美解决idea无法搜索下载插件的问题

    完美解决idea无法搜索下载插件的问题

    这篇文章主要介绍了完美解决idea无法搜索下载插件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 一文详解Object类和抽象类

    一文详解Object类和抽象类

    这篇文章主要介绍了一文详解Object类和抽象类,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下。希望对你的学习有所帮助
    2022-08-08
  • Java运行时环境之ClassLoader类加载机制详解

    Java运行时环境之ClassLoader类加载机制详解

    这篇文章主要给大家介绍了关于Java运行时环境之ClassLoader类加载机制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • Java Http请求传json数据乱码问题的解决

    Java Http请求传json数据乱码问题的解决

    这篇文章主要介绍了Java Http请求传json数据乱码问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 浅析Java IO相关知识点

    浅析Java IO相关知识点

    本篇文章给大家分享了关于java io的一些相关知识点以及相关内容,对此有需要的朋友可以学习参考下。
    2018-05-05
  • springboot使用swagger-ui 2.10.5 有关版本更新带来的问题小结

    springboot使用swagger-ui 2.10.5 有关版本更新带来的问题小结

    这篇文章主要介绍了springboot使用swagger-ui 2.10.5 有关版本更新带来的问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java多线程的实现方式详解

    Java多线程的实现方式详解

    这篇文章主要介绍了Java多线程的实现方式详解,线程就是进程中的单个顺序控制流,也可以理解成是一条执行路径,java中之所以有多线程机制,目的就是为了提高程序的处理效率,需要的朋友可以参考下
    2023-08-08
  • Spring Boot 整合mybatis 与 swagger2

    Spring Boot 整合mybatis 与 swagger2

    之前使用springMVC+spring+mybatis,总是被一些繁琐的xml配置,还经常出错,下面把以前的一些ssm项目改成了spring boot + mybatis,相对于来说优点太明显了,具体内容详情大家通过本文学习吧
    2017-08-08

最新评论