Ribbon配置

在Feign中配置Ribbon非常简单,直接在application.properties中配置即可,如:

# 设置连接超时时间
ribbon.ConnectTimeout=500
# 设置读取超时时间
ribbon.ReadTimeout=5000
# 对所有操作请求都进行重试
ribbon.OkToRetryOnAllOperations=true
# 切换实例的重试次数
ribbon.MaxAutoRetriesNextServer=2
# 对当前实例的重试次数
ribbon.MaxAutoRetries=1

同样也可以指定服务配置,直接在application.properties中采用.ribbon.key=value的格式进行配置,如下:

# 设置针对user-service服务的连接超时时间
user-service.ribbon.ConnectTimeout=600
# 设置针对user-service服务的读取超时时间
user-service.ribbon.ReadTimeout=6000
# 设置针对user-service服务所有操作请求都进行重试
user-service.ribbon.OkToRetryOnAllOperations=true
# 设置针对user-service服务切换实例的重试次数
user-service.ribbon.MaxAutoRetriesNextServer=2
# 设置针对user-service服务的当前实例的重试次数
user-service.ribbon.MaxAutoRetries=1

在SpringCloudFeign中是默认打开重试机制,从上面的配置信息也可以看出,我们可以设置重试的次数。对于重试机制的测试,可以让服务提供方的方法延迟随机毫秒数来测试。

Hystrix配置

对于Hystrix的配置同样可以在application.properties中配置,全局配置直接使用默认前缀hystrix.command.default,如

# 设置熔断超时时间
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
# 关闭Hystrix功能(不要和上面的配置一起使用)
feign.hystrix.enabled=false
# 关闭熔断功能
hystrix.command.default.execution.timeout.enabled=false

也可以直接对指定的接口进行配置,采用hystrix.command.default.<commandKey>作为前缀,比如如/findAllUser

# 设置熔断超时时间
hystrix.command.findAllUser.execution.isolation.thread.timeoutInMilliseconds=10000
# 关闭熔断功能
hystrix.command.findAllUser.execution.timeout.enabled=false

对于重复的接口名会共用这一条Hystrix配置;

禁用Hystrix

上面的配置信息中,可以通过配置文件全局禁用Hystrix也可以指定接口禁用。我们也可以注解属性的方式禁用Hystrix; 
- 构建一个关闭Hystrix的配置类

@Configuration
public class DisableHystrixConfiguration { @Bean
@Scope("prototype")
public Feign.Builder feignBuilder(){
return Feign.builder();
}
}
  • @FeignClient注解中,通过configuration参数引入上面实现的配置
@FeignClient(value = "USER-SERVICE",configuration = DisableHystrixConfiguration.class)
public interface UserRafactorService extends UserService {
}

服务降级配置

在Hystrix中我们可以直接通过@HystrixCommand注解的fallback参数进行配置降级处理方法,然而Feign对其进行封装,并提供了一种简单的定义方式: 
1. 在之前的feign-consumer服务中创建一个UserServiceFallback类,该类实现UserService接口。这里对于哪个类接口的降级就实现哪个接口,

@Component
public class UserServiceFallback implements UserService {
@Override
public List<User> findAll() {
return null;
} @Override
public User finUserById(Long id) {
return new User(-1L,"error",0);
} @Override
public User findUserHeader(String name, Long id, Integer age) {
return new User(-1L,"error",0);
} @Override
public User insertUser(User user) {
return new User(-1L,"error",0);
}
}
  1. 然后再@FeignClient注解中指定服务降级处理类即可:
@FeignClient(value = "USER-SERVICE",fallback = UserServiceFallback.class)
  1. 在配置文件中开启Hystrix:
feign:
hystrix:
enabled: true

然后在USER-SERVICE服务中将某个接口设置延迟测试:

请求压缩

Spring Cloud Feign支持对请求和响应进行GZIP压缩,以提高通信效率,配置方式如下:

# 配置请求GZIP压缩
feign.compression.request.enabled=true
# 配置响应GZIP压缩
feign.compression.response.enabled=true
# 配置压缩支持的MIME TYPE
feign.compression.request.mime-types=text/xml,application/xml,application/json
# 配置压缩数据大小的下限
feign.compression.request.min-request-size=2048

日志配置

SpringCloudFeign为每一个FeignClient都提供了一个feign.Logger实例。可以根据logging.level.<FeignClient>参数配置格式来开启Feign客户端的DEBUG日志,其中<FeignClient>为Feign客户端定义接口的完整路径。如:

logging:
level:
com.wqh.feign.service.UserService: debug

然后再主类中直接加入Looger.Level的Bean

@Bean
public Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}

这里也可以通过配置,然后在具体的Feign客户端来指定配置类实现日志。 
日志级别有下面4类: 
- NONE:不记录任何信息; 
- BASIC:仅记录请求方法、URL以及响应状态码和执行时间; 
- HEADERS:除了记录BASIC级别的信息外,还记录请求和响应的头信息; 
- FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据等。

spring coud Feign常用配置的更多相关文章

  1. SSH(struts+spring+hibernate)常用配置整理

    SSH(struts+spring+hibernate)常用配置整理 web.xml配置 <?xml version="1.0" encoding="UTF-8&q ...

  2. Spring Cloud Feign 自定义配置(重试、拦截与错误码处理) 实践

    Spring Cloud Feign 自定义配置(重试.拦截与错误码处理) 实践 目录 Spring Cloud Feign 自定义配置(重试.拦截与错误码处理) 实践 引子 FeignClient的 ...

  3. 笔记:Spring Cloud Feign Ribbon 配置

    由于 Spring Cloud Feign 的客户端负载均衡是通过 Spring Cloud Ribbon 实现的,所以我们可以直接通过配置 Ribbon 的客户端的方式来自定义各个服务客户端调用的参 ...

  4. Spring Cloud Feign Ribbon 配置

    由于 Spring Cloud Feign 的客户端负载均衡是通过 Spring Cloud Ribbon 实现的,所以我们可以直接通过配置 Ribbon 的客户端的方式来自定义各个服务客户端调用的参 ...

  5. 笔记:Spring Cloud Feign Hystrix 配置

    在 Spring Cloud Feign 中,除了引入了用户客户端负载均衡的 Spring Cloud Ribbon 之外,还引入了服务保护与容错的工具 Hystrix,默认情况下,Spring Cl ...

  6. 笔记:Spring Cloud Feign 其他配置

    请求压缩 Spring Cloud Feign 支持对请求与响应进行GZIP压缩,以减少通信过程中的性能损耗,我们只需要通过下面二个参数设置,就能开启请求与响应的压缩功能,yml配置格式如下: fei ...

  7. Spring Cloud Eureka 常用配置详解,建议收藏!

    前几天,栈长分享了 <Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!>,今天来分享下 Spring Cloud Eureka 常用的一些参数配置及说 ...

  8. Spring Web MVC常用配置汇总

    pom.xml ============================================================================================ ...

  9. spring coud feign

    1. 依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>sprin ...

随机推荐

  1. 20165234 《Java程序设计》第四周学习总结

    第四周学习总结 教材学习内容总结 第5章 子类与继承 子类的继承性 子类和父类在同一包中的继承性:子类继承父类中不是 private 的成员变量和方法作为自己的成员变量和方法 子类和父类不在同一包中的 ...

  2. nginx使用https协议

    效果: nginx添加ssl模块 ./configure --with-http_ssl_module 生成证书 openssl genrsa -out ca.key 2048 openssl req ...

  3. [Harbor]Docker登录Harbor仓库(HTTP方式)

    Docker登录到Harbor仓库时,不管是使用http协议还是使用https协议,都需要修改一些配置. 这篇文章来介绍一下,在使用http协议时,需要进行什么哪些配置. 首先,确定自己的Harbor ...

  4. 028_shell脚本递归求值

    一. #!/bin/sh factorial() { if [ "$1" -gt "1" ]; then i=`expr $1 - 1` j=`factoria ...

  5. http请求在ie中F12查看显示已挂起

    页面有解析和运算工作之后 http新请求在ie中F12查看显示已挂起,http post ,请求返回少量数据

  6. HSSFWorkbook操作excel读写

    //exlel读操作 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Ite ...

  7. windows 2012执行powershell脚本报错

    使用powershell运行脚本报错:进行数字签名.无法在当前系统上运行该脚本.有关运行脚本和设置执行策略的详细信息 修复方法:powershell "Set-ExecutionPolicy ...

  8. 洛谷P5219 无聊的水题 I [prufer序列,生成函数,NTT]

    传送门 思路 有标号无根树的计数,还和度数有关,显然可以想到prufer序列. 问题就等价于求长度为\(n-2\),值域为\([1,n]\),出现次数最多的恰好出现\(m-1\)次,这样的序列有哪些. ...

  9. css之relative

    一.relative对absolute的限制作用 1.限制left/top/right/bottom定位.absolute默认是在也没的左上角,当父类设定为relative,absolute就被限制在 ...

  10. noj算法 装载问题 回溯法

    描述: 有两艘船,载重量分别是c1. c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2.确定是否有可能将所有集装箱全部装入两艘船. 输入: 多个测例,每个测例的输入占 ...