Spring Cloud微服务笔记六(OpenFeign接口调用)

概况

Feign是一个生命是WebService客户端。使用Feign能让编写的WebService客户端更加简单,他的使用方法是==定义一个服务接口,然后在上面添加注解,==Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters,Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

Feign旨在使编写Java Http客户端变得更容易,在使用Ribbon+RestTemplate时,利用RestTemplate对Http请求的封装处理,形成了一套模板化的调用方法。但是在实际开发过程中,由于对服务的以来调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。,所以,Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义。在Feign的是线下,==我们只需要创建一个接口并使用注解的方式来配置它(以前是Dao接口上面标注Mapper注解,现在是一个微服务上面标注一个Feign注解即可),==即可完成对服务提供方的接口绑定,简化了使用Spring Cloud Ribbon时,自动封装服务客户端的开发量。

Feign集成了Ribbon:利用Ribbon维护了服务列表信息,并且通过轮询实现了客户端的负载均衡。而与Ribbon不同的是,通过Feign只需要定义服务绑定接口且以声名式的方法,优雅而简单的实现了服务的调用。

Feign与Open Feign的区别
在这里插入图片描述

相关配置

Maven包

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

主启动类添加注解:@EnableFeignClients

示例

消费者示例代码

service层

/**
*
* @author zhangminjie
* @create 2020-06-18 15:13
**/
@Component
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {

    @GetMapping("/payment/getPaymentById")
    CommomResult<Payment> getPaymentById(@RequestParam("id") String id);
}

controller层

/**
*
* @author zhangminjie
* @create 2020-06-18 15:16
**/
@RestController
@Slf4j
@RequestMapping("/order")
public class OrderFeignController {

    @Resource
    private PaymentFeignService paymentFeignService;

    @GetMapping("/getPaymentById")
    public CommomResult<Payment> getPaymentById(@Param("id") String id){
        return paymentFeignService.getPaymentById(id);
    }
}

**@FeignClient(value = “CLOUD-PAYMENT-SERVICE”)**中的value是代表注册中心的服务名称,一般也就是服务提供者YML配置里面的application.name名称。如果有多个集群,就会使用负载均衡。

OpenFeign超时控制

OpenFeign默认等待1s,超时后报错TimeOut,修改默认的超时时间需要配置YML

# 设置feign客户端超时时间(OpenFeign默认支持ribbon)
ribbon:
  # 指的是建立连接所用的时间,适用于网络状态正常的情况下,两端连接所用的时间
  ReadTimeout: 5000
  # 指的是建立连接后从服务器读取到可用资源所用的时间
  ConnectTimeout: 5000

OpenFeign日志

Feign提供了日志打印功能,可以通过配置来调整日志级别,从而了解Feign中Http请求的细节,对Feign接口的调用情况进行监控和输出。
日志级别:
**NONE:**默认级别,不显示任何日志
**BASIC:**仅记录请求方法、URL、响应状态码及执行时间
**HEADERS:**除了BASIC中定义的信息之外,还有请求的响应的头信息
**FULL:**除了HEADERS重定义的信息之外,还有响应的正文及其源数据

YML配置开启日志功能

logging:
  level:
    com.study.springcloud.service.PaymentFeignService: debug

配置日志Bean

/**
*
* @author zhangminjie
* @create 2020-06-18 16:04
**/
@Configuration
public class FeignConfig {

    @Bean
    public Logger.Level feignLoggerLevel(){
        return Level.FULL;
    }

}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值