app开发定制Spring cloud Ribbon Feign 超时,重试配置

在使用Spring Cloud 的时候,app开发定制都会用到做负载均衡,使用Feign 简化web 服务调用,app开发定制在使用的过程中,app开发定制网络服务是不稳定,app开发定制所有要设置超时时间,app开发定制避免服务端响应慢影响调用的服务,网络可能偶尔不稳定,重试机制能增加成功的几率。处理超时机制的几个方式;如下

Ribbon 超时设置
1.全局设置,所有的ribbon客户端都会生效

 ribbon.ReadTimeout=2000 # 设置读取时间为2s
 ribbon.ConnnectTimeout=1000 #tcp建立连接的时间,内网一般设置1s以内


2.独立设置某个服务的ribbon调用超时时间

    该设置会覆盖掉全局配置,servicename为调用服务在注册服务名称

 servicename.ribbon.ReadTimeout=2000 # 设置读取时间为2s
 servicename.ribbon.ConnnectTimeout=1000 #tcp建立连接的时间,内网一般设置1s以内


Ribbon 重试设置
1.需要引入spring的重试模块组件,否则配置不生效,这点一定要注意

<!--  RestTemplate Fegin  Ribbon 调用重试需要引入次包           -->
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
            <version>1.3.0</version>
        </dependency> 


2.全局设置,这设置调用失败的话,当前服务重试一次,如果不成功,重试下一个服务一次

ribbon.OkToRetryOnAllOperations #对所有的操作都进行重试,默认是GET请求进行重试
ribbon.MaxAutoRetries=1 # 重试当前服务最大次数
ribbon.MaxAutoRetriesNextServer=1 #下一个服务的重试次数


3.独立设置某个服务的ribbon调用超时时间

    该设置会覆盖掉全局配置,servicename为调用服务在注册中心注册服务名称

servicename.ribbon.OkToRetryOnAllOperations #对所有的操作都进行重试,默认是GET请求进行重试
 servicename.ribbon.MaxAutoRetries=1 # 重试当前服务最大次数
 servicename.MaxAutoRetriesNextServer=1 #下一个服务的重试次数 


Fegin整合Ribbon超时设置
1. 和ribbon设置超时配置一样

2.spring cloud 也对 提供了其他配置方式,比如这里服务名称为  user-service ,不过这种方式设置超时,不能使用配置中心动态调整超时时间,这点需要特别注意。

  feign.client.config.user-service.read-timeout=2000   # 设置读取时间为2s 
  feign.client.config.user-service.connect-timeout=1000 #tcp连接超时时间1s以内     


Fegin整合Ribbon重试设置
1.和ribbon设置重试一样

Fegin不使用Ribbon超时设置
1.这里Feign 不在使用Ribbon负载均衡,直接通过url调用一些服务,比如通过nginx调用,FeignClient 配置必须要配置name,这里还是以user-service为例

  feign.client.config.user-service.read-timeout=2000   # 设置读取时间为2s 
  feign.client.config.user-service.connect-timeout=1000 #tcp连接超时时间1s以内     


Fegin不使用Ribbon重试设置
1.需要实现Retryer接口

public interface Retryer extends Cloneable {
 
  /**
   * if retry is permitted, return (possibly after sleeping). Otherwise propagate the exception.
   */
  void continueOrPropagate(RetryableException e);
 
}


2.这里以使用Feign 的默认实现Default为例配置,这里使用bean的方式配置,这里配置 最大重试次次数是5次,最大重试时间1s,每次重试间隔100ms

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
import feign.Retryer;
 
import static java.util.concurrent.TimeUnit.SECONDS;
 
@Configuration
public class AppConfig {
 
 
 
    @Bean
    public Retryer feignRetryer(){
 
        return new Retryer.Default(1,SECONDS.toMillis(1), 5);
    }
 
 
}

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发