SpringCloud Feign中优雅的在服务提供方实现fallback方法

起因:

  1. 我个人认为关于在服务消费方实现fallback的方法是不符合现实逻辑的,也不够优雅(拒绝反驳,因为你看到了这篇文章可能就是想这么干,哈哈),因为只有服务提供方才明白服务降级后的处理结果应该怎么样处理,而不是消费方关心的事。
  2. 因为正常的Feign的fallback配置是需要在消费方进行服务降级处理的,所以有了本文章。

正题:

一、定义好类

为了实现这样的目标,同时避免Feign的坑,我们先定义四个类:
例子:
服务者提供:UserApi 和 UserApiFallback
服务消费者:UserClient 和 UserFallback
先说提供方的:
UserApi :
SpringCloud Feign中优雅的在服务提供方实现fallback方法_第1张图片
UserApiFallback:在这里进行服务降级的实现处理
SpringCloud Feign中优雅的在服务提供方实现fallback方法_第2张图片
再来消费方的:
UserClient:
SpringCloud Feign中优雅的在服务提供方实现fallback方法_第3张图片
UserFallback:
SpringCloud Feign中优雅的在服务提供方实现fallback方法_第4张图片

二、说明

  1. UserApiFallback接口类继承UserApi接口类并重写其方法进行实现,是为了保持再消费方调用的时候接口方法名的一致性(不然Feign会报错,后面说到)
  2. UserClient是FeignClient的接口类,同样继承UserApi保持接口方法名的一致性
  3. UserFallback中 implements UserClient,UserApiFallback,并且:
    加上@Component 和@RequestMapping(“userFallback”)注解!!!这里是重点,不然Feign会报错,RequestMapping里面的路径只要不和UserApi里面定义的一样就行,随便起
  4. 之所以UserFallback还implements 了UserApiFallback 是因为用这个类来实现对FeignClient的UserClient方法的重写,实现在消费方不需要在去手动实现方法了,这也是我的目的,也是本文的正题。
  5. 其实也就是对Feign的fallback原理的理解的一种实现方法而已,fallback的调用本来是要对FeignClient的UserClient方法的重写达到目的的,并且要重写RequestMapping路径才能正常;

本文到此就结束了,本次测试的项目是正常运行的,关于如何配置Feign并使其正常运行请自行搜索相关内容,这里就不多描述了,如果本文的描述表达方面有缺陷还请多多谅解。谢谢!

你可能感兴趣的:(SpringCloud Feign中优雅的在服务提供方实现fallback方法)