我使用Spring创建微服务。我使用Eureka进行服务发现,使用Spring cloud gateway进行路由。我想要为我拥有的服务数量自动路由。
例如,如果一个服务'eureka-client‘注册到Eureka,并且使用Spring Cloud Gateway进行路由,我必须为每个服务创建一个路由,如下所示。
routes:
- id: eureka-client
uri: lb://eureka-client
predicates:
- Path=/eureka-client/**只有几个服务是可以接受的,但最终我可能会得到数百个服务。而且每个人都必须在Spring Cloud Gateway中编写自己的路由。我用过spring.cloud.gateway.discovery.locator.enabled=true,但没有解决这个问题。基本上,我正在尝试消除yaml文件中的路由配置。
有没有办法提供从Spring Cloud Gateway到Eureka的每个服务的自动路由?
我得到了404,因为它不能得到适当的路由,任何帮助都将不胜感激。谢谢。
发布于 2020-08-13 10:31:00
只是在使用
spring.cloud.gateway.discovery.locator.enabled=true spring.cloud.gateway.discovery.locatorlower-case-service-id: true
而不显式地指定路由应该起作用。
发布于 2021-09-04 21:18:38
有关自动路由配置的说明,请参阅:
对于Eureka Netflix客户端,必须在pom.xml中添加所需的依赖项,必须在主应用程序类(@EnableEurekaClient)中启用它,并且必须在applications.yml中指定所需的属性
eureka:
client:
fetchRegistry: true
registerWithEureka: false
serviceUrl:
defaultZone: http://localhost:port/eureka
instance:
preferIpAddress: true为了给网关启用小写的服务,需要添加:
spring:
application:
name: gateway service
cloud:
gateway:
discovery:
locator:
enabled: 'true'
lower-case-service-id: 'true'发布于 2020-11-29 01:22:47
您必须用下面的代码让网关知道eureka服务器
eureka.client.service-url.defaultZone=http://user:pass@localhost:8761/eureka
然后阻止网关将自己注册到eureka
eureka.client.register-with-eureka=false
将第二个选项设置为false很重要,因为它会导致使用lb:servicename结构的负载均衡出现404个错误。
https://stackoverflow.com/questions/58714918
复制相似问题