springcloud-Feign初步配置

Feign

Feign可帮助我们更加便捷,优雅的调用HTTP API。(替代RestTemplate)

即 在Order微服务 可以直接调用product微服务的ProductController中方法。

feign已经继承了Ribbon依赖和自动配置。




  • 服务消费者引入spring-cloud-starter-openfeign 依赖
  • 通过@FeignClient 声明一个调用远程微服务接口
  • 启动类上通过@EnableFeignClients 激活Feign


        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-openfeignartifactId>
        dependency>

一、依赖

在服务消费者中引入feign依赖

<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-openfeignartifactId>
dependency>

二、OrderApplication启动类添加Feign的支持

@SpringBootApplication
//@EnableFeignClients 
@EnableFeignClients
public class OrderApplication {
     
	public static void main(String[] args) {
     
		SpringApplication.run(OrderApplication.class, args);
	}
}

三、启动类激活FeignClient

在服务消费者Order服务中 创建一个Feign接口,是用来请求product微服务

package xyz.gsdn.order.feign;
//指定需要调用的微服务名称
@FeignClient(name="service-product")
public interface ProducrFeignClient {
     
    //调用的请求路径
    @RequestMapping(value = "/product/{id}",method = RequestMethod.GET)
    public Product findById(@PathVariable("id") Long id);
}

四、OrderController中配置请求提供者的调用接口

  • 注入ProductFeginClient对象
  • Order微服务 使用ProductFeginClient直接调用product的服务方法
@RestController
@RequestMapping("/order")
public class OrderController {
     

    //1.注入FeignClient对象
    @Autowired
    private ProductFeginClient productFeginClient;

    @GetMapping("/buy/{id}")
    public Product order(@PathVariable Long id) {
     
        //2.Order微服务 使用FeignClient请求product服务方法
        return productFeginClient.findById(id);
    }
}



关于Feign的配置,可以不配置使用默认

feign:
  client:
    config:
      feignName: ##定义FeginClient的名称
        connectTimeout: 5000 # 相当于Request.Options建立链接的超时时长
        readTimeout: 5000 # 相当于Request.Options读取超时时长
# 配置Feign的日志级别,相当于代码配置方式中的Logger
        loggerLevel: full
# Feign的错误解码器,相当于代码配置方式中的ErrorDecoder
        errorDecoder: com.example.SimpleErrorDecoder
# 配置重试,相当于代码配置方式中的Retryer
        retryer: com.example.SimpleRetryer
# 配置拦截器,相当于代码配置方式中的RequestInterceptor
        requestInterceptors:
          - com.example.FooRequestInterceptor
          - com.example.BarRequestInterceptor
        decode404: false

请求压缩配置

feign:
  compression:
    request:
      enabled: true # 开启请求压缩
      mime-types: text/html,application/xml,application/json # 设置压缩的数据类型
      min-request-size: 2048 # 设置触发压缩的大小下限
   response:
     enabled: true # 开启响应压缩

日志级别

feign:
  client:
    config:
      shop-service-product:
        loggerLevel: FULL
logging:
  level:
     cn.itcast.order.fegin.ProductFeginClient: debug

logging.level.xx : debug : Feign日志只会对日志级别为debug的做出响应

feign.client.config.shop-service-product.loggerLevel : 配置Feign的日志Feign有四种:

  • NONE【性能最佳,适用于生产】:不记录任何日志(默认值)
  • BASIC【适用于生产环境追踪问题】:仅记录请求方法、URL、响应状态代码以及执行时间
  • HEADERS:记录BASIC级别的基础上,记录请求和响应的header。
  • FULL【比较适用于开发及测试环境定位问题】:记录请求和响应的header、body和元数
    据。


项目源码:https://gitee.com/hxmkd/spring-cloud/tree/master/study_springcloud4-feign

你可能感兴趣的:(springcloud,feign,sprdingcloud)