ZuulFilter和Fegin超时设置

         之前配置ZuulFilter和Fegin超时时用了相同的配置方法,之前请求时数据量较小,没有出现什么问题。可是今天用Sidecar调用了python的一个服务,这个服务比较耗时,问题就出现了,各种超时,经过问题排查,最终发现之前的理解是错误的。

         正确理解:

         ZuulFilter和Fegin中有两种超时:

                 1、ribbon超时(个人理解为路由超时)

                 2、hystris超时,即熔断器超时

  当ribbon超时时会出现,socket read timeout异常,当hystris超时时也会出现常netflix.hystrix.exception.HystrixRuntimeException。

           这两种超时要同时满足不超时才不会出现异常。

           对于ZuulFilter和Fegin来说,它们设置超时是不一样的

ZuulFilter超时设置方法:

#路由超时,即socket超时设置
ribbon:
  ReadTimeout: 600000
  ConnectTimeout: 600000
  MaxAutoRetries: 0
  MaxAutoRetriesNextServer: 1


#熔断器超时
hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: false

以上将hystrix超时直接关闭,或者设置时间
hystrix:
  command:
      default:
        execution:
          isolation:
            thread:
              timeoutInMilliseconds: 50000

Fegin设置超时方法:

#避免熔断器超时
feign.hystrix.enabled: false


此处是直接不超时,当然也可以设置超时时间


ribbon:
  ReadTimeout: 600000
  ConnectTimeout: 600000
  MaxAutoRetries: 0
  MaxAutoRetriesNextServer: 1

 

 

最后 由于春运快到了,给大家安利一个抢火车票的小程序心到抢票,微信扫码关注点击立即抢票即可

ZuulFilter和Fegin超时设置_第1张图片

个人亲测效率很高,大家也可以加他们官方微信  xdticket  咨询。

你可能感兴趣的:(java)