十四、断路器-Hystrix 对 Feign 的支持

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dengqiang123456/article/details/76100866

一、 Hystrix 对 Feign 的支持
1、 添加 IUserBiz 的实现类 RcFeignFallback

import org.springframework.stereotype.Component; 
import com.drunck.education.bean.User; 
import com.drunck.education.feign.IUserBiz; 

@Component 
public class RcFeignFallback implements IUserBiz {
    @Override  
    public User find(int id) {   
        return null;  
    }
    @Override  
    public String view1(int id) {   
            System.out.println("调用远程接口异常,返回自定义信息");
            return "system error";  
    } 
}  

2、 只需要在@FeignClient 注解里面添加 fallback 属性,如下:

fallback=RcFeignFallback.class 

二、 禁用 Hystrix

# 在 feign 里面禁用 
hystrix feign.hystrix.enabled=false 

三、 单个应用禁用 Hystrix
在 RcFeignConfiguration 里面配置一个 bean,如下:

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

四、 配置隔离策略

# 在 feign 和 Ribbon 里面配置隔离策略(全局配置) hystrix.command.default.execution.isolation.strategy=SEMAPHORE 

# 配置单个 hystrix.command.HystrixCommandKey.execution.isolation.strategy 

说明:HystrixCommandKey 在 Ribbon 下面默认为方法名,在 Feign 下面默认为类名#方法名(参数 类型)

@Bean 
@Scope("prototype") 
public Feign.Builder feignBuilder() { 
class RcSetterFactory implements SetterFactory { 
   @Override 
   public Setter create(Target<?> target, Method method) { 
        String groupKey = target.name(); 
        String commandKey = method.getName(); 
        return HystrixCommand.Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey(groupKey))                 .andCommandKey(HystrixCommandKey.Factory.asKey(commandKey)); 
       } 
      }   
return HystrixFeign.builder().setterFactory(new RcSetterFactory());
}

猜你喜欢

转载自blog.csdn.net/dengqiang123456/article/details/76100866