Feign

1、什么是feign

Feign是Netflix开发的声明式、模板化的HTTP客户端,Feign可帮助我们更加便捷、优雅地调用HTTP API。

Spring Cloud对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Eureka,从而使得Feign的使用更加方便

2、Ribbon+RestTemplate进行微服务调用的缺点

ResponseEntity<List> responseEntity = restTemplate.getForEntity("http://order-service/order/queryOrdersByUserId/"+userId,List.class);

Ribbon进行调用

@Bean

@LoadBalanced

public RestTemplate restTemplate() {

return new RestTemplate();

}

缺点:我们编码的请求的url比较简单,如果系统很复杂,则需要拼接很多参数,而且代码看起来不是很美观,不利于理解代码的含义,给别人维护造成一定的困扰

3、feign的搭建

 

1)服务消费方加入feign依赖和提供方的api依赖

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

 

<dependency>    

<groupId>com.######.fc</groupId>    

<artifactId>fc-customer-service-api</artifactId>    

<version>1.0.0</version>

</dependency>

 

2)新建remote.service包,用于微服务调用

新建接口,并继承依赖的api接口(不用再写一遍调用的方法)

增加@FeignClient(value = "fc-process-service")注解

daacfda942f74180b1b1b5c851e93f76ddd.jpg

3)主启动类增加注解

e82d6dba03635f7d13d19cae95c44cf4117.jpg

4、feign的日志级别

1)、NONE【性能最佳,适用于生产】:不记录任何日志(默认值)

public class MsProviderCustomCfg {

@Bean

public Logger.Level feignLoggerLevel() {

return Logger.Level.NONE;

}

}

2)、HEADERS:记录BASIC级别的基础上,记录请求和响应的header

public class MsProviderCustomCfg {

@Bean

public Logger.Level feignLoggerLevel() {

return Logger.Level.HEADERS;

}

}

b16452c1f13ffe46d87ef295ae08d74e2d4.jpg

3)、FULL【比较适用于开发及测试环境定位问题】:记录请求和响应的header、body和元数据

public class MsProviderCustomCfg {

@Bean

public Logger.Level feignLoggerLevel() {

return Logger.Level.FULL;

}

}

64e7bbfdff8fb0fa24cf07b3975cb3009e3.jpg

4)、BASIC【适用于生产环境追踪问题】:仅记录请求方法、URL、响应状态代码以及执行时间

public class MsProviderCustomCfg {

@Bean

public Logger.Level feignLoggerLevel() {

return Logger.Level.BASIC;

}

}

55b87864b6ea93d7a94e43403791598cf0e.jpg

5、两种定义日志级别的方法

1)配置类

public class MsProviderCustomCfg {

@Bean

public Logger.Level feignLoggerLevel() {

return Logger.Level.BASIC;

}

}

@FeignClient(name = "ms-provider-order-feign-custom",configuration = MsProviderCustomCfg.class,path = "/order")

public interface MsCustomFeignOrderApi {

@RequestLine("GET /queryOrdersByUserId/{userId}")

public List<OrderVo> queryOrdersByUserId(@Param("userId") Integer userId);

}

2)yml文件中配置

feign.client.config.ms-provider-order-feign-custom.loggerLevel=full

 

转载于:https://my.oschina.net/u/2610056/blog/3061536

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值