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);
    }
  • 相关阅读:
    【Objective-C 篇】 ☞ 9. 协议
    【Objective-C 篇】 ☞ 8. block
    【Objective-C 篇】 ☞ 7. Category、Extension
    【Objective-C 篇】 ☞ 6. 封装、继承、组合与聚合、多态
    【Objective-C 篇】 ☞ 5. MRC、ARC
    【Objective-C 篇】 ☞ 4. 内存管理
    【Objective-C 篇】 ☞ 3. self、数据类型、编码规范
    【Objective-C 篇】 ☞ 2. 属性、方法
    【Objective-C 篇】 ☞ 1. 基础、语法
    【Objective-C 篇】 ☞ 学前准备
  • 原文地址:https://www.cnblogs.com/zhangjianbin/p/7228606.html
Copyright © 2011-2022 走看看