OpenFeign 的工作原理?
发布于
一、使用
@FeignClient(name = "user-service")
public interface UserClient {
@GetMapping("/user/{id}")
User getUser(@PathVariable Long id);
}
二、原理
- 启动时扫描 @FeignClient 注解,为每个接口生成 JDK 动态代理。
- 代理对象注册到 Spring 容器。
- 调用方法时,代理根据注解构造 HTTP 请求,通过 LoadBalancer 选实例,发起 HTTP 调用。
- 返回结果反序列化为方法返回类型。
三、超时配置
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 10000
四、注意
Feign 默认不开启重试,需手动配置 Retryer。生产中建议配合 Sentinel 做熔断。