SpringCloud的Ribbon和feign重试机制

前言:一直不清楚ribbon的重试和feign的重试关系,由于网上用的cloud版本都不一样,没个明确的说明。我这里记录一下。有不妥的地方,欢迎指正。

SpringCloud的版本:

Greenwich.RELEASE

SpringBoot的版本:

2.1.13.RELEASE

我用的这个版本,feign的重试是默认关闭的,它直接用的是ribbon的重试机制,ribbon的重试机制也是默认开启的,详见源码:

 

可以看到,feign这是默认关闭了。

 可以看到,我们进行服务负载调用的时候,重试机制,这是默认开启的。

下面是ribbon的重试配置,供参考:

#ribbon全局配置

ribbon:
  # 同一实例最大重试次数,不包括首次调用。默认值为0,请求某服务6s超时后准备重试,该重试策略会先尝试再访问该实例,如果失败1次之后才更换实例访问。
  MaxAutoRetries: 1
  # 同一个微服务其他实例的最大重试次数,不包括第一次调用的实例。默认值为1
  MaxAutoRetriesNextServer: 1
  # 是否所有操作(GET、POST等)都允许重试。默认值为false,设置为true会有接口幂等的情况,这个看情况进行设置
  # 默认false,设定为false的话,只有get请求会重试。默认的话get请求会重试1次
  OkToRetryOnAllOperations: false
  #负载均衡超时时间,默认值5000
  ReadTimeout: 6000
  #ribbon请求连接的超时时间,默认值2000
  ConnectTimeout: 6000

然后,我这里有个疑问,如果,我业务中想用spring的retry重试机制,我引入了pom配置。

<dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
        </dependency>

 那么feign的重试机制,会自动开启么。如果开启了,服务调用的重试会和ribbon的重试机制一起使用,还是继续走的是ribbon的重试机制。希望有人解答一下。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenFeign 是一个在 Spring Cloud 中使用的声明式 HTTP 客户端,它提供了一些默认的重试机制来处理请求失败的情况。在默认情况下,OpenFeign 使用了 Ribbon 作为负载均衡器,并且具备了一些默认的重试策略。 OpenFeign 的默认重试机制是基于 Ribbon 的,它会在发生请求失败时进行重试。具体的重试策略可以通过配置文件或者代码进行调整。默认情况下,OpenFeign 会进行 5 次最大重试,默认的最大重试次数可以通过配置项 `feign.client.config.default.retryMaxAttempts` 进行修改。 除了最大重试次数,OpenFeign 还提供了其他的重试相关配置项,例如 `feign.client.config.default.retryPeriod` 可以设置每次重试之间的时间间隔,默认为 100 毫秒。此外,还可以通过 `feign.client.config.default.retryableStatusCodes` 配置项来设置哪些 HTTP 状态码会触发重试,默认情况下,OpenFeign 会在遇到网络异常(如连接超时、连接拒绝等)或者 5xx 级别的状态码时进行重试。 如果默认的重试机制无法满足需求,也可以通过自定义 Feign 的配置类来实现更加灵活的重试策略。可以通过实现 `Retryer` 接口来定义自己的重试策略,并将其注入到 Feign 的配置类中。 总结起来,OpenFeign重试机制可以通过配置文件或者代码进行调整,默认情况下会在发生请求失败时进行最多 5 次的重试。如果需要更加定制化的重试策略,可以通过自定义 Feign 的配置类来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值