【发布时间】:2020-04-01 03:49:13
【问题描述】:
我想通过在 eureka 中注册的服务 ID(应用程序名称)在我的 spring 云网关(无 zuul)中启用默认路由,但我总是收到 404 错误。
在我的聊天服务的 bootstrap.yml 我已经定义了应用名称
spring:
application:
name: chat-service
在应用程序属性中:
eureka:
instance:
preferIpAddress: true
client:
healthcheck:
enabled: true
serviceUrl:
defaultZone: http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka/
当我转到 eureka 的仪表板时,我可以看到我的聊天服务和网关也已注册。
网关应用中Eureka的配置和聊天服务一样,但是我也有这个:
spring:
application:
name: gateway
cloud:
gateway:
discovery:
locator:
enabled: true
接下来我还尝试添加不能正常工作的显式路由,但如果我将发现定位器启用设置为true,这应该不需要吧?
routes:
- id: chat-service-route
uri: lb://chat-service
predicates:
- Path=**
我创建了测试端点,我尝试直接在聊天服务和网关上调用。直接呼叫工作正常,因此问题将与路由有关。
@RestController
@RequestMapping
public class TestController {
@GetMapping
public String test() {
return "chat-service ready";
}
}
我做错了什么?我有点绝望。我正在使用 spring boot 2.2.2 和 Hoxton.RELEASE 云依赖版本
【问题讨论】:
-
你能解释一下“不起作用”是什么意思吗?你试过什么网址?
-
@spencergibb 对不起,我应该写得更干净。当我从网关调用时,聊天服务中的休息端点总是出现 404 错误
-
你在网关上调用什么url?
-
@spencergibb 网关在 8080 上运行,所以我调用 localhost:8080/chat-service
-
聊天服务是否响应/chat-service?否则需要重写路径
标签: spring spring-boot microservices spring-cloud spring-cloud-gateway