Spring Cloud Gateway默认路由不起作用

时间:2019-12-07 10:51:10

标签: spring spring-boot microservices spring-cloud spring-cloud-gateway

我想通过在eureka(应用程序名称)中注册的服务ID在我的Spring Cloud Gateway中启用默认路由(无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在网关应用程序中的配置与聊天服务相同,但我也有这个配置:

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云依赖版本

1 个答案:

答案 0 :(得分:1)

尝试删除显式路由,然后将以下属性添加到应用yml。这对我有用。

spring:
  cloud:
    gateway:
      discovery:
        locator:
          lower-case-service-id: true
相关问题