Feign服务调用组件的使用

Feign

1. Feign是什么

  1. Feign是一个声明式WebService客户端.使用Feign能让编写Web Service客户端更加简单.
  2. 它的使用方法是定义一个服务接口然后在上面添加注解.Feign也支持可拔插式的编码器和解码器.SpringCloud对Feign进行了封装,使其支持了SpringMVC标准注解和HttpMessageConverters.Feign可以与Eureka和Ribbon组合使用以支持负载均衡.

2. Feign能干什么

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

3. Feign集成了Ribbon

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

4. Feign和OpenFeign的区别

FeignOpenFeign
Feign是Spring Cloud组件中的一个轻量级RESTful的HTTP服务客户端;Feign内置了Ribbon,用来做客户端负载均衡,去低啊用服务注册中心的服务.Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务OpenFeign是SpringCloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等.OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务
org.springframework.cloud spring-cloud-starter-feign org.springframework.cloud spring-cloud-starter-openfeign

5. OpenFeign超时控制

  1. 默认Feign客户端只等待一秒钟,但是服务端处理需要超过一秒钟,导致Feign客户端不想等待了,直接反会报错.为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制.

  2. yml文件开启配置

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

6. Feign日志

  1. 写配置类,建一个config包

    package com.atguigu.springcloud.config;
    
    import feign.Logger;
    import org.springframework.context.annotation.Bean;
    import org.springframework.stereotype.Component;
    
    @Component
    public class FeignConfig {
    
        @Bean
        Logger.Level feignLoggerLevel(){
            return Logger.Level.FULL;
        }
    }
    
    
  2. 写配置文件

    logging:
      level:
        #feign以什么级别监控哪个接口
        #com.atguigu.springcloud.service.OrderPaymentService 是你要监控的接口名称
        com.atguigu.springcloud.service.OrderPaymentService: debug
    
  3. 直接调用,然后在控制台查看日志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Feign是一个用于实现接口代理远程调用组件。在进行跨服务调用时,首先需要定义一个Feign接口。这个接口用于声明需要调用的目标服务的方法和参数。接着,通过注解@FeignClient来指定需要调用服务的名称。例如,使用@FeignClient("coupon-template-service")来指定调用coupon-template-service服务。然后,可以在接口中使用@GetMapping或@RequestMapping等注解来指定具体的请求路径和参数。最后,通过在方法上添加@RequestParam或@RequestBody等注解来传递参数。这样就完成了Feign的跨服务调用配置。 Feign的跨服务调用是通过动态代理实现的,它会根据接口的定义在运行时动态生成代理类,并通过代理类来发起远程调用。因此,在实际调用时,我们只需要像调用本地方法一样调用Feign接口的方法即可。总结起来,Feign服务调用的具体步骤为:1) 定义Feign接口;2) 使用@FeignClient注解指定调用服务名称;3) 在接口中定义具体的请求路径和参数;4) 通过注解传递参数;5) 调用Feign接口的方法来发起远程调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用 OpenFeign 实现跨服务调用](https://blog.csdn.net/weixin_40364776/article/details/128696456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [怎样使用feign进行远程调用其他服务](https://blog.csdn.net/qq_55278081/article/details/126308889)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Spring boot2X Consul如何使用Feign实现服务调用](https://download.csdn.net/download/weixin_38602982/12744704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值