Spring Cloud Gateway默认路由不起作用

eqqqjvef  于 2023-08-04  发布在  Spring
关注(0)|答案(2)|浏览(210)

我想通过在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 的 Jmeter 板我可以看到注册我的聊天服务和网关以及.
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";
    }
}


我做错了什么?我有点绝望。我使用的是Sping Boot 2.2.2和霍克斯顿.RELEASE云依赖版本

xn1cxnb4

xn1cxnb41#

尝试删除显式路由并将下面的属性添加到应用程序yml。这对我很有效

spring:
  cloud:
    gateway:
      discovery:
        locator:
          lower-case-service-id: true

字符串

wf82jlnq

wf82jlnq2#

在终端服务中:

server.port=8993
spring.application.name=department-service
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
management.endpoints.web.exposure.include=*
eureka.instance.hostname=localhost

字符串
在api-gateway项目中:

server.port=9191
spring.application.name=api-gateway
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

management.endpoints.web.exposure.include=*

logging.level.root=INFO
logging.level.org.springframework.cloud.gateway=TRACE
logging.level.org.springframework.cloud.gateway.route=INFO

spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lower-case-service-id=true

相关问题