OpenFeign 的工作原理?

发布于

一、使用

@FeignClient(name = "user-service")
public interface UserClient {
    @GetMapping("/user/{id}")
    User getUser(@PathVariable Long id);
}

二、原理

  1. 启动时扫描 @FeignClient 注解,为每个接口生成 JDK 动态代理。
  2. 代理对象注册到 Spring 容器。
  3. 调用方法时,代理根据注解构造 HTTP 请求,通过 LoadBalancer 选实例,发起 HTTP 调用。
  4. 返回结果反序列化为方法返回类型。

三、超时配置

feign:
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 10000

四、注意

Feign 默认不开启重试,需手动配置 Retryer。生产中建议配合 Sentinel 做熔断。