目录
原文地址: spring-cloud-alibaba
四、Feign声明式远程调用
4.1、公共模块引入openfeign
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
4.2、在一个模块正常写接口、另一个模块来调用这个接口
1、member模块(被调用模块)正常写接口
2、coupon模块(调用模块)新建一个feign包,建一个接口类,专门调用member模块的接口
3、在接口类上使用@FeignClient("mall-member")
指定nacos上的服务名
4、写全 member模块(被调用模块) 接口路径
4.3、在调用模块启动类上使用@EnableFeignClients
开启feign
coupon模块(调用者)开启feign, 指定包名
测试调用
4.4、feign性能优化
Feign底层的客户端实现:
1、URLConnection:默认实现,不支持连接池
2、Apache HttpClient:支持连接池
3、OKHttp:支持连接池
因此优化feign主要包括:
1、使用连接池代替默认的URLConnection
2、日志级别,最好用basic或none
引入依赖
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
配置yml
feign:
client:
config:
default: # default 全局配置
loggerLevel: BASIC #日志级别,BASIC就是最基本的请求和响应信息
httpclient:
enabled: true # 支持httpClient的开关
max-connections: 200 #最大连接数
max-connections-per-route: 50 # 单个路径的最大连接数