SpringCloud重试机制配置详解

 更新时间:2018年04月06日 11:05:41   作者:张建斌  
本篇文章主要介绍了SpringCloud重试机制配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

首先声明一点,这里的重试并不是报错以后的重试,而是负载均衡客户端发现远程请求实例不可到达后,去重试其他实例。

@Bean
@LoadBalanced
RestTemplate restTemplate() {
  HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
  httpRequestFactory.setReadTimeout(5000);
  httpRequestFactory.setConnectTimeout(5000);
  return new RestTemplate(httpRequestFactory);
} 

feign重试机制 

feign默认是通过自己包下的Retryer进行重试配置,默认是5次

package feign;
import static java.util.concurrent.TimeUnit.SECONDS;

/**
 * Cloned for each invocation to {@link Client#execute(Request, feign.Request.Options)}.
 * Implementations may keep state to determine if retry operations should continue or not.
 */
public interface Retryer extends Cloneable {

 /**
  * if retry is permitted, return (possibly after sleeping). Otherwise propagate the exception.
  */
 void continueOrPropagate(RetryableException e);

 Retryer clone();

 public static class Default implements Retryer {

  private final int maxAttempts;
  private final long period;
  private final long maxPeriod;
  int attempt;
  long sleptForMillis;

  public Default() {
   this(100, SECONDS.toMillis(1), 5);
  }

  public Default(long period, long maxPeriod, int maxAttempts) {
   this.period = period;
   this.maxPeriod = maxPeriod;
   this.maxAttempts = maxAttempts;
   this.attempt = 1;
  } 

feign取消重试

@Bean
  Retryer feignRetryer() {
    return Retryer.NEVER_RETRY;
  } 

feign请求超时设置

@Bean
Request.Options requestOptions(ConfigurableEnvironment env){
  int ribbonReadTimeout = env.getProperty("ribbon.ReadTimeout", int.class, 6000);
  int ribbonConnectionTimeout = env.getProperty("ribbon.ConnectTimeout", int.class, 3000);

  return new Request.Options(ribbonConnectionTimeout, ribbonReadTimeout);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot3集成Quartz的示例代码

    SpringBoot3集成Quartz的示例代码

    Quartz由Java编写的功能丰富的开源作业调度框架,可以集成到几乎任何Java应用程序中,并且能够创建多个作业调度,在实际的业务中,有很多场景依赖定时任务,比如常见的:订单超时处理,业务识别和预警通知等,本文介绍了SpringBoot3如何集成Quartz
    2023-08-08
  • Java IO文件后缀名过滤总结

    Java IO文件后缀名过滤总结

    本篇文章给大家详细讲述了Java IO文件后缀名过滤的相关知识点,以及实例代码分享,有需要的朋友跟着小编一起学习下。
    2018-02-02
  • Java读写文件方法总结(推荐)

    Java读写文件方法总结(推荐)

    下面小编就为大家带来一篇Java读写文件方法总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • SpringBoot过滤器的使用

    SpringBoot过滤器的使用

    过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制等,一个资源,没有经过授权,肯定是不能让用户随便访问的,这个时候,也可以用到过滤器,需要的朋友可以参考一下
    2021-11-11
  • mybatis-plus 使用Condition拼接Sql语句各方法的用法

    mybatis-plus 使用Condition拼接Sql语句各方法的用法

    这篇文章主要介绍了mybatis-plus 使用Condition拼接Sql语句各方法的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java编程中二维数组的初始化和基本操作实例

    Java编程中二维数组的初始化和基本操作实例

    这篇文章主要介绍了Java编程中二维数组的初始化和基本操作实例,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • 滥用@PathVariable导致bug原因分析解决

    滥用@PathVariable导致bug原因分析解决

    这篇文章主要为大家介绍了滥用@PathVariable导致bug原因分析解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • java List出现All elements are null问题及解决

    java List出现All elements are null问题及解决

    这篇文章主要介绍了java List出现All elements are null问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-11-11
  • MyBatis-Plus MetaObjectHandler的原理及使用

    MyBatis-Plus MetaObjectHandler的原理及使用

    MyBatis-Plus的MetaObjectHandler接口允许开发者自动填充实体类字段,如创建时间、更新时间等公共字段,减少代码重复,提高数据一致性和完整性,感兴趣的可以了解一下
    2024-10-10
  • Mybatis实现一对一、一对多关联查询的方法(示例详解)

    Mybatis实现一对一、一对多关联查询的方法(示例详解)

    这篇文章主要介绍了Mybatis实现一对一、一对多关联查询的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论