Spring Cloud Feign 配置

/ java / 没有评论 / 327浏览

Ribbon配置

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

  1. 全局配置

全局配置使用ribbon.<key>=<value>的方式设置ribbon的各项默认参数.

# 默认客户端调用超时时间
ribbon.ConnectTimeout=500
ribbon.ReadTimeout=5000
  1. 指定服务配置

指定服务配置使用<client>.ribbon.key=value格式设置.

HELLO-SERVICE.ribbon.ConnectTimeout=500
HELLO-SERVICE.ribbon.ReadTimeout=5000
HELLO-SERVICE.ribbon.OkToRetryOnAllOperations=true
...
  1. 重试机制
HELLO-SERVICE.ribbon.MaxAutoRetriesNextServer=2
HELLO-SERVICE.ribbon.MaxAutoRetries=1

Hystrix配置

  1. 全局配置

对于Hystrix的全局配置桶Spring Cloud Ribbon的全局配置一样, 直接使用默认配置前缀, 比如设置全局超时时间: hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000

注: 需要确认feign.hystrix.enabled参数没有被设置为false

  1. 禁用Hystrix
feign.hystrix.enabled=false
@Configuration
public class DisableHystrixConfiguration {

    @Bean
    @Scope("prototype")
    public Feign.Builder feignBuilder() {
        return Feign.builder();
    }

}

然后在HelloService的注解@FeignClient中通过configuration参数指定

@FeignClient(value = "HELLO-SERVICE", configuration = DisableHystrixConfiguration.class)
public interface HelloService {
    ...
}
  1. 服务降级

无法使用Spring Cloud Hystrix提供的方式, 而是使用Spring Cloud Feign另外一种简单的定义方式

需要为HelloService接口实现一个服务降级类HelloServiceFallback, 其中每个重写方法的实现逻辑都可以用来定义相应的服务降级逻辑

然后在@FeignClient注解中指定fallback属性指定对于的服务降级实现类