当前位置: 首页 > 知识库问答 >
问题:

Spring cloud gateway无法解析来自eureka服务器的服务id

沈伟
2023-03-14

遵循spring指南构建了eureka服务器、spring cloud gateway和一个示例rest服务。

但是,网关无法使用eureka服务器的服务名称检索URL。网关和服务的注册似乎没有问题。当提供实际endpoint而不是服务ID时,它工作得很好。我无法理解为什么网关不从尤里卡解析服务id。我是否遗漏了任何配置?

错误消息:

2018-09-05 23:20:17.751  INFO 47037 --- [ctor-http-nio-2] c.netflix.loadbalancer.BaseLoadBalancer  : Client: localhost instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=localhost,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2018-09-05 23:20:17.756  INFO 47037 --- [ctor-http-nio-2] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater
2018-09-05 23:20:17.760  INFO 47037 --- [ctor-http-nio-2] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client localhost initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=localhost,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@107dc063
2018-09-05 23:20:17.822 ERROR 47037 --- [ctor-http-nio-2] .a.w.r.e.DefaultErrorWebExceptionHandler : Failed to handle request [GET http://localhost:8080/rest-service/hello]

org.springframework.cloud.gateway.support.NotFoundException: Unable to find instance for localhost
    at org.springframework.cloud.gateway.filter.LoadBalancerClientFilter.filter(LoadBalancerClientFilter.java:72) ~[spring-cloud-gateway-core-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.cloud.gateway.handler.FilteringWebHandler$GatewayFilterAdapter.filter(FilteringWebHandler.java:133) ~[spring-cloud-gateway-core-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.cloud.gateway.filter.OrderedGatewayFilter.filter(OrderedGatewayFilter.java:44) ~[spring-cloud-gateway-core-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.cloud.gateway.handler.FilteringWebHandler$DefaultGatewayFilterChain.lambda$filter$0(FilteringWebHandler.java:115) ~[spring-cloud-gateway-core-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45) ~[reactor-core-3.1.8.RELEASE.jar:3.1.8.RELEASE]

  • 尤里卡服务器
  • 春云网关
  • Rest服务

共有1个答案

简培
2023-03-14

问题在于spring cloud gateway从eureka访问服务名称的方式,它是大小写敏感的。修复方法是在application.yml中添加以下属性

spring.cloud.gateway.discovery.locator.lower-case-service-id= true
spring.cloud.gateway.discovery.locator.enabled= true

我已经创建了一个示例项目,以显示所有他们一起工作。

 类似资料:
  • 我正在使用Client编写一个Eureka客户端应用程序。这是我的POM 如您所见,我使用的是spring boot版本

  • 我已经按照指示从:https://cloud.spring.io/spring-cloud-static/Dalston.SR5/multi/multi_spring-cloud-eureka-server.html 没有成功,就不知道会错过什么。 我有一些代码演示:https://github.com/dbranco/eureka-server 我期待着运行:gradlew bootRun并能够

  • 如何包含Eureka服务器 要在项目中包含Eureka服务器,请使用组org.springframework.cloud和工件id spring-cloud-starter-eureka-server的启动器。有关 使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面。 如何运行Eureka服务器 示例eureka服务器; @SpringBoot

  • 我尝试将我的服务(auth-service)连接到service Registry的Eureka服务器。Eureka服务器正在运行,但当我尝试连接身份验证服务时,什么也没有发生。 Eureka服务器的URL:http://localhost:8761/ DS副本:本地主机 启动身份验证服务时的消息: 发现服务pom

  • 当我问eureka它知道的服务(localhost:8071/eureka/apps/),它说有3个: 有人知道原因是什么吗? 作为提示,WEBFRONT应用程序是一个带有eureka插件的nodejs应用程序。路由器和订单都是引导。显然前端的记录是正确的,尤里卡认为它是上升的。我逐行比较了订单和前端的eureka XML输出,并没有看到真正的任何关键区别...

  • 我有一个简单的spring引导的微服务(用户服务)和一个spring引导的网关服务(网关-服务器),使用Zuul设置到Eureka服务器(发现服务)注册。向用户-服务发送请求直接起作用,并且所有服务都成功地注册到eureka服务器。当我向网关服务器发送请求时,我会得到一个转发错误,原因是“com.netflix.client.clientException:Load balancer没有用于客户端