openfeign 使用
温馨提示:
本文最后更新于 2025年09月08日,已超过 278 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
对于 自身系统中的方法调用-> 直接复制方法签名。


客户端负载均衡与服务端负载均衡

openfeign 的日志
yml中配置参数
logging:
level:
feign: debug 加入配置类
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
超时控制
连接超时 默认时间 10s
读取超时 默认 60s

yml中 相关的参数设置
spring:
cloud:
openfeign:
client:
config:
default:
connect-timeout: 1000
read-timeout: 1000
service-product:
logger-level: full
connect-timeout: 3000
read-timeout: 3000
# 有精确的设置 使用精确设置,没有 就使用 默认的 

重试机制
添加 配置类 到spring中,其中 参数 可不传 ,也可 自定义
@Bean
Retryer retryer() {
return new Retryer.Default(100L, 1000L, 3);
} 请求拦截器 和 相应拦截器

在 发请求的模块中 ,添加 请求拦截器 ,该组件 会 自动 被扫描到(功能:在请求头中 添加token参数)
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;
import java.util.UUID;
@Component
public class XTokenRequestInterceptor implements RequestInterceptor {
/**
* 请求拦截器
*
* @param requestTemplate
*/
@Override
public void apply(RequestTemplate requestTemplate) {
System.out.println("请求拦截器 启动");
requestTemplate.header("X-Token", UUID.randomUUID().toString());
}
}
兜底回调
创建 兜底回调类
import org.example.feign.ProductFeignClient;
import org.example.product.bean.Product;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
@Component
public class ProductFeignClientFallBack implements ProductFeignClient {
@Override
public Product getProductById(Long id) {
System.out.println("服务调用失败,返回默认值");
Product product = new Product();
product.setId(0L);
product.setPrice(new BigDecimal("00"));
product.setProdctName("Apple");
product.setNum(0);
return product;
}
}
在yml中 配置启动
feign:
sentinel:
enabled: true 在 接口中 标注 兜底回调类
@FeignClient(value = "service-product", fallback = ProductFeignClientFallBack.class) //feign 客户端
正文到此结束
- 本文标签: SpringCloud
- 本文链接: http://119.91.109.247:8443//article/133
- 版权声明: 本文由张亚东原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权