ITPub博客

首页 > 数据库 > 数据库开发技术 > rpc框架Feign十大可扩展组件你知道哪些?

rpc框架Feign十大可扩展组件你知道哪些?

原创 数据库开发技术 作者:服务端技术栈 时间:2023-06-15 08:10:00 0 删除 编辑

前言

一个朋友最近去面试,问了一个这样的题目,OpenFeign十大可扩展组件有哪些,虽然看过OpenFeign的源码,但是要我说出10个组件,我还是很难说全,记忆最深的只有 1、日志,2、解码器,3、重试组件,其他的想不起来了。

今天我回顾了下源码,之前看的没有好好记录下来,还是要拿个小本本记下来呀。现在我就把复习OpenFeign原理的过程记录下来。

先找到我之前写的feign调用demo项目

1、这是之前学习openfeign源码写的demo,客户端接口使用FeignClient注解标记,记得添加jar依赖spring-cloud-starter-netflix-eureka-client

@FeignClient(contextId = "feignServer", name = "feignServer")public interface FeignClientApi{    @GetMapping("/hello/feign")    String hello();}

2、启动类使用EnableFeignClients注解标记开启feign功能

@SpringBootApplication(scanBasePackages = {"cn.supfox"}, exclude = DataSourceAutoConfiguration.class)@EnableEurekaClient@EnableFeignClients(basePackages = {"cn.supfox"})@EnableCircuitBreakerpublic class EurekaClientApp {

‍

3、写一个http接口调用发起远程rpc调用,debug模式启动开始debug

@RestControllerpublic class FeignTestController {
@Autowired private FeignClientApi feignClientApi;
@GetMapping( "/test/feign") public String get() { return feignClientApi.hello(); }}

4、使用postman访问

http://localhost:8080/test/feign,

查看feignClientApi对象

通过debug发现上面的feignClientApi对象变成了一个$Proxy对象,没错OpenFeign使用到了Jdk动态代理技术来实现面向接口式的远程rpc调用

FeignInvocationHandler就是生成Jdk动态代理必须实现的接口InvocationHandler子类

FeignInvocationHandler类就负责处理代理请求的逻辑,它把请求转发给dispatch处理。dispatch默认使用SynchronousMethodHandler来处理,从SynchronousMethodHandler的属性组成就可以看到Feign的十大组件。根据对象结构我整理出一个图,里面就有我们常用的重试器组件,解码组件,日志组件。

这十个组件是真的优秀啊,他们都是可以被我们扩展的,即我们可以选择他的默认实现,也能自己实现他的接口替换默认实现,Spring团队实力真的强。

上面里的feign组件后面将出文详细分析,感兴趣的兄弟一定要关注我哦。
既然看到这里了

原文作者:服务端技术栈;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-03-08

  • 博文量
    97
  • 访问量
    41429