zoukankan      html  css  js  c++  java
  • 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);
    }
  • 相关阅读:
    微信小程序开发——修改小程序原生checkbox、radio默认样式
    微信小程序开发——微信小程序下拉刷新真机无法弹回
    转:slf4j-api、slf4j-log4j12、log4j之间关系
    MyBatis3 入门学习指南
    Java 多线程重排序的探究
    Kafka 生产者和消费者入门代码基础
    Java面试题
    刻苦读书的故事合集
    Win10 calc.exe 无法打开计算器的解决方法
    Redis(三):set/get 命令源码解析
  • 原文地址:https://www.cnblogs.com/zhangjianbin/p/7228606.html
Copyright © 2011-2022 走看看