1.OpenFeign简介
Feign是一个声明式的Web服务客户端(Web服务客户端就是Http客户端),让编写Web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。
cloud官网介绍Feign:Spring Cloud OpenFeign
OpenFeign源码:https://github.com/OpenFeign/feign
2.OpenFeign能干什么
Java当中常见的Http客户端有很多,除了Feign,类似的还有Apache 的 HttpClient
以及OKHttp3
,还有SpringBoot自带的RestTemplate
这些都是Java当中常用的HTTP 请求工具。
什么是Http客户端?
当我们自己的后端项目中 需要 调用别的项目的接口的时候,就需要通过Http客户端来调用。在实际开发当中经常会遇到这种场景,比如微服务之间调用,除了微服务之外,可能有时候会涉及到对接一些第三方接口也需要使用到 Http客户端 来调用 第三方接口。
所有的客户端相比较,Feign更加简单一点,在Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它(以前是Dao接口上面标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的接口绑定。
一句话:OpenFeign可以提供声明式定义服务接口供调用
3.maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
4.配置文件
spring:
application:
openfeign:
client:
config:
default:
## default 设置的全局超时时间,指定服务名称可以设置单个服务的超时时间
connect-timeout: 20000
read-timeout: 20000
httpclient:
#openfeign默认的httpclient不支持连接池,性能效率较低,官方推荐使用Apache HttpClient5
hc5:
enabled: true
#设置openfeign的请求响应压缩
compression:
request:
enabled: true
#支持压缩的数据类型
mime-types: text/xml,application/xml,application/json
min-request-size: 2048
response:
enabled: true
#设置feign日志 logging.level+@FeignClient完整接口名+debug
logging:
level:
com:
sunxiao:
cloud:
apis:
PayFeignApi: debug
5.启动和配置类
启动类要开启openfeign:@EnableFeignClients。 配置类:
@Configuration
public class FeignConfig {
// 重试机制
@Bean
public Retryer myRetryer() {
return new Retryer.Default();
// 初次间隔 最大间隔 最大请求次数(1+2) = 3
// return new Retryer.Default(100, 1, 3);
}
// 日志记录级别
@Bean
public Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
}
6.接口
@FeignClient(value = "servicename")
public interface PayFeignApi {
@PostMapping("/Users")
Result<Integer> addUser(@RequestBody UserDTO user);
}
7.客户端调用
@RestController
@RequestMapping("/feign")
public class OrderController {
//注入接口对象
@Resource
private PayFeignApi payFeignApi;
@PostMapping("/users")
public Result<Integer> test(@RequestBody UserDTO userDTO) {
return payFeignApi.addUser(userDTO);
}
}
本文含有隐藏内容,请 开通VIP 后查看