Feign是Netflix开发的声明式、模板化的HTTP客户端,Feign可帮助咱们更加便捷、优雅地调用HTTP API。spring
Spring Cloud对Feign进行了加强,使其支持Spring MVC注解,另外还整合了Ribbon和Eureka,从而使得Feign的使用更加方便api
ResponseEntity<List> responseEntity = restTemplate.getForEntity("http://order-service/order/queryOrdersByUserId/"+userId,List.class);ide
Ribbon进行调用微服务
@Bean性能
@LoadBalanced测试
public RestTemplate restTemplate() {编码
return new RestTemplate();url
}spa
缺点:咱们编码的请求的url比较简单,若是系统很复杂,则须要拼接不少参数,并且代码看起来不是很美观,不利于理解代码的含义,给别人维护形成必定的困扰.net
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")注解
3)主启动类增长注解
1)、NONE【性能最佳,适用于生产】:不记录任何日志(默认值)
public class MsProviderCustomCfg {
public Logger.Level feignLoggerLevel() {
return Logger.Level.NONE;
}
}
2)、HEADERS:记录BASIC级别的基础上,记录请求和响应的header
public class MsProviderCustomCfg {
public Logger.Level feignLoggerLevel() {
return Logger.Level.HEADERS;
}
}
3)、FULL【比较适用于开发及测试环境定位问题】:记录请求和响应的header、body和元数据
public class MsProviderCustomCfg {
@Bean
public Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
}
4)、BASIC【适用于生产环境追踪问题】:仅记录请求方法、URL、响应状态代码以及执行时间
public class MsProviderCustomCfg {
@Bean
public Logger.Level feignLoggerLevel() {
return Logger.Level.BASIC;
}
}
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