Spring Cloud Feign 如何实现服务降级

2020-03-25  本文已影响0人  zbsong

为什么使用服务降级就不再多做阐述,在之前的文章讲Spring Cloud Ribbon中有提到过,本节只来实现一下怎么使用 Feign来到达服务降级的目的,本节列子使用上一节创建的项目fegin-consumer来进行改造,实现服务降级。

Feign实现服务降级只需要为Feign客户端的定义接口编写一个具体的接口实现类,在上一节中在fegin-consumer工程中创建了一个FeignService定义接口类,我们只需要为FeignService接口实现一个服务降级类FeignServiceFallback,其中每个重写的方法的实现逻辑都可以用来定义响应的服务降级逻辑。

@Component
public class FeignServiceFallback implements FeignService {
    @Override
    public String hello() {
        return "/feign/test:远程调用失败了";
    }

    @Override
    public String testRequest(String name) {
        return "/feign/testRequest:远程调用失败了";
    }

    @Override
    public String testHeader(String name) {
        return "/feign/testHeader:远程调用失败了";
    }

    @Override
    public String testRequestBody(User user) {
        return "/feign/testRequestBody:远程调用失败了";
    }
}
@FeignClient(name = "hello-client", fallback = FeignServiceFallback.class)
public interface FeignService {

    @RequestMapping(value = "/feign/test")
    String hello();

    @RequestMapping(value = "/feign/testRequest")
    String testRequest(@RequestParam(value = "name") String name);

    @RequestMapping(value = "/feign/testHeader")
    String testHeader(@RequestHeader(value = "name") String name);

    @RequestMapping(value = "/feign/testRequestBody")
    String testRequestBody(@RequestBody User user);

}
测试

启动服务注册中心和fegin-consumer服务,但是服务提供者实例不去启动,这样当远程调用时,可以看一下是否进行了服务降级。
访问:http://localhost:9000/feign/test2

image.png
从控制台打印的结果中可以看到,因为服务提供者没有启动,远程调用失败,执行了服务降级逻辑。
上一篇 下一篇

猜你喜欢

热点阅读