引言
在集成nacos组件以及springcloudalibaba 的gateway时,出现正确配置,如下文配置,却在测试demo调用该服务的时候,无法路由到此服务,说是无效服务。经过查阅资料得知其命名不符合gateway的命名规范,因而无法识别。规范详情见下文。
spring:
cloud:
gateway:
discovery:
locator:
lowerCaseServiceId: true
enabled: true
routes:
# 研究模块
- id: j-research
uri: lb://j_modules_research
predicates:
- Path=/research/**
filters:
- StripPrefix=1
gateway可以识别的nacos服务名,命名规范
在gateway中配置uri配置有三种方式,包括
-
第一种:ws(websocket)方式: uri: ws://localhost:9000
-
第二种:http方式: uri: http://localhost:8130/
-
第三种:lb(注册中心中服务名字)方式: uri: lb://brilliance-consumer
其中ws和http方式不容易出错,因为http格式比较固定,但是lb方式比较灵活自由。不考虑网关,只考虑服务时,服务名命名时比较自由,都能启动被访问,被注册到注册中心,但是如果提供给gateway使用时,就会对服务命名方式有特殊要求了。
能被gateway的lb方式识别到的命名规则为:
“a-zA-Z:.”
这也意味着,java命名规范中可以使用的英文下划线(“_”)不能被识别,而我命名为:brilliance_consumer,刚好带下划线,改为brilliance-consumer后则可以正常通过网关访问自己项目。
如果名字中有非*“a-zA-Z:.”*规则字符,则会报错,文章来源:https://www.toymoban.com/news/detail-806282.html
规则见包org.springframework.cloud.gateway.filter中的类RouteToRequestUrlFilter文章来源地址https://www.toymoban.com/news/detail-806282.html
到了这里,关于springcloud gateway正确路由配置 uri找不到服务?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!