Feign远程调用
一、Feign简介
Feign 是一个声明式的 REST 客户端,它用了基于接口的注解方式,很方便实现客户端配置。
Feign 最初由 Netflix 公司提供,但不支持SpringMVC注解,后由 SpringCloud 对其封装,支持了SpringMVC注解,让使用者更易于接受。(所以引用的依赖是open-feign)
二、Feign入门
1.在消费端引入 open-feign 依赖
<!--feign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.编写Feign调用接口
/*
feign声明式接口。发起远程调用的。
String url = "http://FEIGN-PROVIDER/goods/findOne/"+id;
Goods goods = restTemplate.getForObject(url, Goods.class);
*/
@FeignClient(value = "FEIGN-PROVIDER")
public interface GoodsFeignClient {
@GetMapping("/goods/findOne/{id}")
public Goods findGoodsById(@PathVariable("id") int id);
}
3.在启动类 添加 @EnableFeignClients 注解,开启Feign功能
@EnableFeignClients //开启Feign
4.测试调用
@Autowired
private GoodsFeignClient goodsFeignClient;
@GetMapping("/goods/{id}")
public Goods findGoodsById(@PathVariable("id") int id){
Goods goods = goodsFeignClient.findGoodsById(id);
return goods;
}
三、Feign其他功能
Feign的超时时间是设置
在调用方的application.yml文件中添加
#设置Ribbon的超时时间
ribbon:
ConnectTimeout: 1000 # 连接超时时间 默认1s
ReadTimeout: 3000 # 逻辑处理的超时时间 默认1s
Feign的日志打印
步骤:
-
在调用方的application.yml文件中添加配置
Feign 只能记录 debug 级别的日志信息。 logging: level: com.itheima: debug
-
创建一个Feign的配置类,定义Feign日志级别Bean
@Configuration public class FeignLogConfig { /* NONE,不记录 BASIC,记录基本的请求行,响应状态码数据 HEADERS,记录基本的请求行,响应状态码数据,记录响应头信息 FULL;记录完成的请求 响应数据 */ @Bean public Logger.Level level(){ return Logger.Level.FULL; } }
-
在Feign的远程调用接口上指定日志配置类
@FeignClient(value = "FEIGN-PROVIDER",configuration = FeignLogConfig.class)
-
这样就完成了!
@FeignClient(value = "FEIGN-PROVIDER",configuration = FeignLogConfig.class)
- 这样就完成了!