springcloud gateway正确路由配置 uri找不到服务?

引言

在集成nacos组件以及springcloudalibaba 的gateway时,出现正确配置,如下文配置,却在测试demo调用该服务的时候,无法路由到此服务,说是无效服务。经过查阅资料得知其命名不符合gateway的命名规范,因而无法识别。规范详情见下文。

yml 复制代码
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:."*规则字符,则会报错,

规则见包org.springframework.cloud.gateway.filter中的类RouteToRequestUrlFilter

相关推荐
weixin_4563216415 分钟前
生产环境下微服务网关选型与实战指南(基于SpringCloud生态)
java·spring cloud
小红的布丁32 分钟前
Redis 内存淘汰与过期策略
java·spring·mybatis
huihuihuanhuan.xin33 分钟前
spring循环依赖以及补充相关知识
java·后端·spring
shark22222221 小时前
springboot中配置logback-spring.xml
spring boot·spring·logback
云烟成雨TD1 小时前
Spring AI 1.x 系列【22】深度拆解 ToolCallbackProvider 生命周期与调用链路
java·人工智能·spring
黎明丶之前2 小时前
Spring Cloud Gateway 升级与 Bucket4j 限流实践
java·spring cloud
StackNoOverflow2 小时前
Spring Data Redis 详解
java·redis·spring
splage3 小时前
maven导入spring框架
数据库·spring·maven
2501_921649493 小时前
从WebSocket到SQL查询:金融数据落库存储及查询接口全流程开发
java·sql·websocket·程序人生·spring cloud·金融·系统架构