软件编程
位置:首页>> 软件编程>> java编程>> SpringCloud重试机制配置详解

SpringCloud重试机制配置详解

作者:张建斌  发布时间:2023-05-13 23:48:46 

标签:spring,cloud,重试

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

SpringCloud重试机制配置详解


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

SpringCloud重试机制配置详解

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);
}

来源:https://www.cnblogs.com/zhangjianbin/p/7228606.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com