Spring Cloud Feign&OpenFeign

本文详细介绍了Feign和OpenFeign在Spring Cloud中的应用,包括如何通过声明式接口简化HTTP服务调用,实现客户端负载均衡。文章还涵盖了Feign的配置、日志设置及其与SpringMVC注解的结合使用。

Feign皆在使编写java http客户端变得更容易

通过feign只需要定义服务绑定接口且以声明式的方式,简单的实现了服务调用

Feign是Spring Cloud组件中的一个轻量级RESTful的http服务端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务,Feign使用方式是:使用Feign的注解定义接口,调用这个接口,就可用调用服务注册中心的服务

OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等,OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务

关键点1: pom.xml

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

 

 

 

关键点2: 启动类加上OpenFeign Client注解

@EnableFeignClients

关键点3: 定义OpenFeign Client接口

@Component
@FeignClient(value = "TCLOUD-PAYMENT-PROVIDER")
public interface PaymentFeignService {
    @GetMapping("/payment/get/{id}") // 这个地址对应提供者的地址
    public CommonResult<Payment> getPaymentById(@PathVariable("id") Integer id);
    @GetMapping("/payment/create")
    public CommonResult<Payment> create(Payment payment);
}

 

Controller示例
 

@GetMapping("/payment/get/{id}")
    public CommonResult<Payment> getPaymentById(@PathVariable("id") Integer id)
    {
        return paymentFeignService.getPaymentById(id);
    }

 

 

Feign超时

OpenFeign默认等待时间1秒种,超过就会报错

 

Feign日志

Feign提供日志功能,通过配置调整日志级别,从而了解Feign中http请求细节

NONE 默认,不显示任何日志

BASIC 仅记录请求方法、URL、响应状态码、执行时间

HEADERS 除了BASIC中定义的信息外,还有请求的响应头信息

FULL 除了HEADERS中定义的信息外,还有请求和响应的正文及元数据

 

修改日志级别

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

 

 不要忘记在application.yml中加上日志输出

logging:
  level:
    com.don.tcloud.customerorder.service.PaymentFeignService: debug #监控哪个接口

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值