Feign雪崩处理

Feign的阻断器

在声明式远程服务调用Feign中,实现服务灾难性雪崩效应处理也是通过Hystrix实现的。而feign启动器spring-cloud-starter-feign中是包含Hystrix相关依赖的。如果只使用服务降级功能不需要做独立依赖。如果需要使用Hystrix其他服务容错能力,需要依赖spring-cloud-starter-hystrix资源。从Dalston版本后,feign默认关闭Hystrix支持。所以必须在全局配置文件中开启feign技术中的Hystrix支持。配置如下:

feign:
  hystrix:
    enabled: true

如果不使用Hystrix服务容错功能,在application client端,服务接口只需要继承服务标准api接口即可实现远程服务调用。如果使用了Hystrix,则有不同的编写方式。具体如下:

  1. 在消费者接口处添加fallback属性

    @FeignClient(name = "EUREKA-CLIENT-PRODUCER", fallbackFactory = FeignFallbackService.class)
    public interface FeignService extends IFeignService {
    }
  1. 在消费者中,再创建一个上述FeignFallbackService的工厂类,并重写需要降级处理的方法

import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component
public class FeignFallbackService implements FallbackFactory<IFeignService> {
    @Override
    public IFeignService create(Throwable throwable) {
        return new IFeignService() {
			    @Override
			    public String get(String name) {
			        return "服务器正忙,请稍后再试";
			    }
			
			    @Override
			    public User get(User user) {
			        user = new User();
			        user.setName("服务器正忙,请稍后再试");
			        return user;
			    }
			
			    @Override
			    public User post(User user) {
			        user = new User();
			        user.setName("服务器正忙,请稍后再试");
			        return user;
			    }
        };
    }
}

Feign的有关YML配置

YML配置文件,对SpringEL的支持更加优秀。可以通过SpringEL定制化的为每个服务调用配置Hystrix的容错处理方案。对Hystrix的配置粒度相比较Properties的配置方案更加细致。
在YML中可配置的Hystrix信息,和Properties中配置的内容是一致。
如果需要对每个服务做定制化配置,建议使用yml配置文件。在语法和格式上更容易管理和维护。


spring:
  application:
    name: XXXX
server:
  port: 80

feign:
  hystrix:
    enabled: true

hystrix:
  command:
    # default代表全部服务配置,如果为某个具体服务定制配置,使用:'服务接口名#方法名(参数类型列表)'的方式来定义。如:'FirstClientFeignService#test(int)'。如果接口名称在应用中唯一,可以只写simpleName。如果接口名称在应用中不唯一,需要写fullName(包名.类名)
    "FirstClientFeignService#testFeign()":
      fallback:
        enabled: false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值