SpringCloud(七)超时、重试

一、Ribbon(单独配置)

可以通过ribbon.xx来进行全局配置。也可以通过服务名.ribbon.xx来对指定服务配置
全局配置:

ribbon:
  ConnectTimeout: 3000 #连接超时时间(ms)
  ReadTimeout: 3000 #通信超时时间(ms)
  MaxAutoRetries: 1 #同一台实例最大重试次数,不包括首次调用
  MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数,不包括首次调用
  OkToRetryOnAllOperations: false  #是否所有操作都重试 

服务配置:

#某个服务设置 
mhb-cloud-zuul-consumer
  ribbon:
    ConnectTimeout: 3000 #连接超时时间(ms)
    ReadTimeout: 3000 #通信超时时间(ms)
    MaxAutoRetries: 1 #同一台实例最大重试次数,不包括首次调用
    MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数,不包括首次调用
    OkToRetryOnAllOperations: false  #是否所有操作都重试

根据上面的参数计算重试的次数 -- 重试3次 则一共产生4次调用:
MaxAutoRetries+MaxAutoRetriesNextServer+(MaxAutoRetries *MaxAutoRetriesNextServer)

二、Ribbon+Feign

Feign默认支持Ribbon;Ribbon的重试机制和Feign的重试机制有冲突,所以源码中默认关闭Feign的重试机制,使用Ribbon的重试机制

二、Ribbon+Feign+Hystrix

设置Hystrix的超时时间,要先设置Ribbon的超时时间
Hystrix超时时间的计算方式为:
(1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout

ribbon:
  ConnectTimeout: 3000 #连接超时时间(ms)
  ReadTimeout: 3000 #通信超时时间(ms)
  MaxAutoRetries: 1 #同一台实例最大重试次数,不包括首次调用
  MaxAutoRetriesNextServer: 1 #重试负载均衡其他的实例最大重试次数,不包括首次调用
  OkToRetryOnAllOperations: false  #是否所有操作都重试

#hystrix的超时时间
hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true
            isolation:
              thread:
                timeoutInMilliseconds: 9000 #超时时间(ms)
posted @   努力的校长  阅读(974)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示