【SpringClou项目搭建--远程调用Feign笔记(五)】


官网:https://github.com/spring-cloud/spring-cloud-openfeign


一、Feign

1、是什么:

Feign是一个声明式WebService客户端。使用Feign能让编写WebService客户端更加简单。
直接在定义一个服务接口然后在上面添加注解。SpringCloud对Feign进行了封装,使其支持了SpringMVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

2、能干什么:

feign主要就是使编写java http客户端更加简单

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

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

二、使用

1、主启动@EnableFeignClients

主启动 添加@EnableFeignClients注解 引入feign

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

}

2、接口@FeignClient

实现feign接口,添加@FeignClient注解激活

@Component
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {

    @PostMapping("/payment/create")
    public CommonResult create(@RequestBody Payment payment);

    @GetMapping("/payment/get/{id}")
    public CommonResult getPaymentById(@PathVariable("id") Long id);
}

在这里插入图片描述

三、超时控制

OpenFeign客户端默认只等待1秒钟,超过1秒直接报错

openFeign内部集成了Ribbon,所以超时时间也由Ribbon控制
修改超时时间,修改yml文件

ribbon:
  #      指的是建立连接所用的时间,适用于网络情况正常的情况下,两端连接所用的时间
  ReadTimeout: 5000
  #      指的是建立连接后从服务器读取到可用资源所用的时间
  ConnectTimout: 5000

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值