feign的基本使用和优化"/>
feign的基本使用和优化
1.导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.常规写法
1.在启动类上加上@EnableFeignClients注解
2.定义一个feign客户端接口
@FeignClient("userservice")
public interface UserClient {@GetMapping("/user/{id}")User findById(@PathVariable("id") Long id);
}
3.需要远程调用的类,注入该接口,调用方法即可
3.feign的性能优化
1.更改feign客户端种类:feign下面有三种客户端,分别是
•URLConnection:默认实现,不支持连接池
•Apache HttpClient :支持连接池
•OKHttp:支持连接池
Feign的性能的主要手段就是使用连接池代替默认的URLConnection。
实现方式:yaml配置feign客户端参数
feign:
client:
config:
default: # default全局的配置
loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息
httpclient:
enabled: true # 开启feign对HttpClient的支持
max-connections: 200 # 最大的连接数
max-connections-per-route: 50 # 每个路径的最大连接数
4.关于@EnableFeignClients注解
@EnableFeignClients(basePackages = "cn.itcast.feign.clients")//指定feign所在包
@EnableFeignClients(clients = {UserClient.class}) //指定扫描到的feign客户端类型
5.关于feign日志的配置
局部配置
feign:
client:
config:
userservice: # 针对某个微服务的配置,只有在访问userservice服务时才会显示日志
loggerLevel: FULL # 日志级别
全局配置
feign:
client:
config:
default: # 这里用default就是全局配置,全局时,每调用feign都会显示对应服务调用日志
loggerLevel: FULL # 日志级别
而日志的级别分为四种:
-
NONE:不记录任何日志信息,这是默认值。
-
BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
-
HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
-
FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。
使用java代码配置feign日志
public class DefaultFeignConfiguration {@Beanpublic Logger.Level feignLogLevel(){return Logger.Level.BASIC; // 日志级别为BASIC}
}
如果要全局生效,将其放到启动类的@EnableFeignClients这个注解中:
@EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration .class)
如果是局部生效,则把它放到对应的@FeignClient这个注解中:
@FeignClient(value = "userservice", configuration = DefaultFeignConfiguration .class)
feign的最佳实现方式
方式:讲feign抽出成一个feign-api的服务,将需要feign需要的类都抽出一份过去,并在调用服务的@EnableFeignClients(basePackages = "feign-api服务feignClient客户端接口所在包路径")指定feignClient位置
1.创建feign的moudle
2.导依赖
3.抽取需要的基类
更多推荐
feign的基本使用和优化
发布评论