openfeign

spring boot feign 使用

1. 添加 feign 客户端依赖

由于Spring Cloud Feign在Hoxton.M2 RELEASED版本之后不再使用Ribbon而是使用spring-cloud-loadbalancer,所以不引入spring-cloud-loadbalancer会报错.

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

2. 在启动类上添加 @EnableFeignClients 注解

3. 创建客户端函数

@FeignClient("UserService")  //服务名称
public interface UserClient {

    @GetMapping("/user/{id}")   //http 请求
    User getById(@PathVariable("id") Long id);
}

4. 配置函数,设置请求头

@Configuration
public class FeignConfiguration {
    @Bean
    public RequestInterceptor requestInterceptor(){
        return new RequestInterceptor() {
            @Override
            public void apply(RequestTemplate requestTemplate) {
                ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
                if(requestAttributes!=null){
                    HttpServletRequest request = requestAttributes.getRequest();  //原请求
                    //获取请求头
                    String header = request.getHeader("Authorization");
                    requestTemplate.header("Authorization",header);  //保存到转发后的header中
                }
            }
        };
    }
}


性能优化,使用httpclient连接池替代默认连接

1. 引入依赖

        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>

2. 配置 yml 配置文件(日志级别<=BASIC)

feign:
  httpclient:
    enabled: true                   # httpclient开关
    max-connections: 200            #最大链接数(默认)
    max-connections-per-route: 50   #单路径最大连接数(默认)

设置日志级别(yml配置文件)

feign 一共有 NONE(不打印日志)、BASIC、HEADERS、FULL(打印所有日志信息) 四个日志级别

feign:
  client:
    config:
      default:   # Default表示全局配置 ,如果是服务名称表示某个微服务配置
        loggerLevel: FULL   
        
# 设置日志级别为 debug
logging:
  level:
    root: debug

nacos与openfeign使用

nacos中ribbon会造成loadbalanc包失效(nacos与openfeign使用)

        <!-- nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>

        </dependency>
全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务