spring-cloud-zuul超时配置不起作用

spring-cloud-zuul timeout configuration does not work

根据spring cloud zuul 8.1.3 zuul timeout,以下配置应该使 zuul 在 20 秒后超时,然而,它在 10 秒时超时。

server:
  port: 8769
spring:
  application:
    name: service-zuul
zuul:
  host:
    connect-timeout-millis: 20000
    socket-timeout-millis: 60000
zuul:
  routes:
    tp:
      path: /**
      url: http://localhost:9998
ribbon:eureka:enabled: false

从控制台输出可以看出过滤器和超时异常之间的间隔只有 10 秒。这意味着 zuul.host.connect-timeout-millis 不起作用。

如果您将 Zuul 与 Eureka 结合使用,请尝试定义以下属性。

ribbon:
  ReadTimeout: 60000
  ConnectTimeout: 20000

如果您将 Zuul 与 Eureka 一起使用,Zuul 将使用 RibbonRoutingFilter 而不是 SimpleHostRoutingFilter 进行路由。在这种情况下,HTTP 请求由 Ribbon 处理。

我终于找到了解决办法:

之前用过properties,第一次尝试yml,好像一个item必须聚合成一个prefix:

zuul:
  host:
    connect-timeout-millis: 20000
    socket-timeout-millis: 60000
  routes:
    tp:
      path: /**
      url: http://localhost:9998

这样后台服务器最多可以有60秒的响应时间。此外,我还发现配置中的顺序很重要。

将以下配置添加到 Zuul 网关以使其工作:

hystrix.command.default.execution.timeout.enabled=真

ribbon.ReadTimeout=5000 ribbon.ConnectTimeout=5000

#(ribbon.ReadTimeout + ribbon.connectTimeout) * (1+ribbon.maxAutoRetries(默认0) * (ribbon.MaxAutoRetriesNextServer (默认1) + 1) #timeoutInMilliseconds= (5000 + 5000) * (1+0)*(1+1) =20000

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=21000

注意:虽然 IDE 抱怨这是未知的 属性,但它仍然有效。