http客户端Feign

80 阅读1分钟

Feign是一个声明式的http客户端,官方地址:github.com/OpenFeign/f… 其作用就是帮助我们优雅的实现http请求的发送

Feign使用

1.依赖

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

2. 在order-service的启动类添加注解开启Feign的功能

image.png

3.定义和使用Feign客户端
例如:

@FeignClient("userservice")
public interface UserClient {

    @GetMapping("/user/{id}")
    User getUserById(@PathVariable Long id);
}

自定义Feign配置

image.png 如修改Feign日志配置

方式一:

image.png

方式二:

image.png

Feign性能优化

  • 使用连接池代替默认的URLConnection
  • 日志级别,最好用basic或none

Feign的性能优化-连接池配置
1.依赖

<!--httpClient的依赖 -->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>

2.配置

feign:
  client:
    config:
      default:        # default全局的配置
        loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息
  httpclient:
    enabled: true           # 开启feign对HttpClient的支持
    max-connections: 200    # 最大的连接数
    max-connections-per-route: 50  # 每个路径的最大连接数

当定义的FeignClient不在SpringBootApplication的扫描包范围时,这些FeignClient无法使用。有两种方式解决:
方式一:指定FeignClient所在包

@EnableFeignClients(basePackages = "cn.test.clientApi")

方式二:指定FeignClient字节码

@EnableFeignClients(basePackageClasses = {UserClient.class})