首页 > 编程 > Java > 正文

SpringCloud重试机制配置详解

2019-11-26 10:06:25
字体:
来源:转载
供稿:网友

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

@Bean@LoadBalancedRestTemplate 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请求超时设置

@BeanRequest.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);}

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表