我从春天的云开始。
我创建了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错误
如果我愿意
我得到了很好的结果
编辑
github上的代码
https://github.com/mctdi/hostel
https://github.com/mctdi/gateway
https://github.com/mctdi/discovery
答案 0 :(得分:2)
hostels
应用程序已在Service Discovery中注册,但gateway
应用程序未注册。将'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
添加到implementation
中的build.gradle
依赖项中-然后它将在Eureka中注册,并且http://localhost:8080/hostels
请求将被路由到hostels
应用。