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

一、 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());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值