OpenFeign
OpenFeign
OpenFeign 是 Spring Cloud 对 Feign 的二次封装,声明式服务调用组件——只需定义接口,框架自动生成实现。增加了对 Spring MVC 注解的支持(@RequestMapping、@GetMapping)。
适用场景
微服务间 HTTP 服务调用、需要简化 HTTP 客户端代码的场景。
快速开始
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>@FeignClient(name = "SERVICE-GOODS")
public interface TestRemoteClient {
@GetMapping("/test")
Result test();
}启动类添加 @EnableFeignClients。
超时配置
OpenFeign 集成 Ribbon,超时通过 Ribbon 控制:
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000日志级别
| 级别 | 说明 |
|---|---|
| NONE | 不记录(默认) |
| BASIC | 请求方法、URL、响应状态码 |
| HEADERS | BASIC + 请求/响应头 |
| FULL | 所有请求和响应详情 |
降级处理
使用 FallbackFactory 实现降级,可获取异常信息:
@Component
public class UserFallback implements FallbackFactory<UserServiceClient> {
@Override
public UserServiceClient create(Throwable cause) {
return id -> new User(); // 返回默认值
}
}
@FeignClient(name = "user-service", fallbackFactory = UserFallback.class)注意
降级生效前提 必须确保 Hystrix 或 Sentinel 已启用,且降级类添加了 @Component。
常见问题
| 问题 | 排查方向 |
|---|---|
| 调用超时 | 检查 readTimeout、Ribbon 超时配置、目标服务响应时间 |
| 降级不生效 | 确认 fallbackFactory、@Component、Hystrix/Sentinel 启用 |