我想通过在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云端依赖版本。
试着删除显式路由,并在应用程序yml中添加以下属性。这对我来说是可行的。
spring:
cloud:
gateway:
discovery:
locator:
lower-case-service-id: true