找不到网关的服务呼叫

时间:2019-06-04 15:10:18

标签: spring-boot spring-cloud

我从春天的云开始。

我创建了3个应用程序,一个用于发现服务,一个用于网关,一个用于服务。 我实际上并没有使用spring cloud配置和任何负载平衡

对于我的发现

server.port=8761
spring.application.name=discovery-service
eureka.instance.hostname=localhost
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false  
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

对于我的网关

#Port for Registry service
server.port=8080
spring.application.name=gateway-service
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.routes[0].id=hostel-service
spring.cloud.gateway.routes[0].uri=lb://hostel-service
spring.cloud.gateway.routes[0].predicates[0]=Path=/hostels/**
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

对于我的旅馆服务

server.port=9000
spring.application.name=hostel-service
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

我看到旅馆服务已在发现服务中注册

  

注册实例HOSTEL-SERVICE / 192.168.102.129:hostel-service:9000   状态为UP(replication = false)

当我去http://localhost:8761/时看到它

当我尝试致电

  

http://localhost:8080/hostels   要么   http://localhost:8080/hostel-service/hostels

我收到404错误

如果我愿意

  

http://localhost:9000/hostels

我得到了很好的结果

编辑

github上的代码

https://github.com/mctdi/hostel
https://github.com/mctdi/gateway
https://github.com/mctdi/discovery

1 个答案:

答案 0 :(得分:2)

hostels应用程序已在Service Discovery中注册,但gateway应用程序未注册。将'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'添加到implementation中的build.gradle依赖项中-然后它将在Eureka中注册,并且http://localhost:8080/hostels请求将被路由到hostels应用。