zoukankan      html  css  js  c++  java
  • SpringCloud之远程调用OpenFeign和Ribbon

    Ribbon、Feign和OpenFeign的区别   

    SpringCloudAlibaba微服务实战教程系列                                                                          

    Spring Cloud 微服务架构学习记录与示例                                               

    一 简介

    Feign是Netflflix开发的⼀个轻量级RESTful的HTTP服务客户端(⽤它来发起请求,远程调⽤的),是以Java接⼝注解的⽅式调⽤Http请求,⽽不⽤像Java中通过封装HTTP请求报⽂的⽅式直接调⽤,Feign被⼴泛应⽤在Spring Cloud 的解决⽅案中。类似于Dubbo,服务消费者拿到服务提供者的接⼝,然后像调⽤本地接⼝⽅法⼀样去调⽤,实际发出的是远程的请求。
    • Feign可帮助我们更加便捷,优雅的调⽤HTTP API:不需要我们去拼接url然后呢调⽤restTemplate的api,在SpringCloud中,使⽤Feign⾮常简单,创建⼀个接⼝(在消费者--服务调⽤⽅这⼀端),并在接⼝上添加⼀些注解,代码就完成了
    • SpringCloud对Feign进⾏了增强,使Feign⽀持了SpringMVC注解(OpenFeign)

    本质:封装了Http调⽤流程,更符合⾯向接⼝化的编程习惯,类似于Dubbo的服务调⽤

    Dubbo的调⽤⽅式其实就是很好的⾯向接⼝编程

    二、配置应用

    (效果)Feign = RestTemplate+Ribbon+Hystrix

    1、引入pom

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

    2、服务消费者⼯程启动类使⽤注解@EnableFeignClients添加Feign⽀持

    @SpringBootApplication
    @EnableDiscoveryClient // 开启服务发现
    @EnableFeignClients // 开启Feign
    public class AutodeliverFeignApplication8092 {
      public static void main(String[] args) {
        SpringApplication.run(AutodeliverFeignApplication8092.class,args);
       }  
    }
    注意:此时去掉Hystrix熔断的⽀持注解@EnableCircuitBreaker即可包括引⼊的依赖,因为Feign会⾃动引⼊

    3、创建Feign接⼝

    // name:调⽤的服务名称,和服务提供者yml⽂件中spring.application.name保持⼀致,可以使用url形式,则为直接调取,不走注册中心
    @FeignClient(name="city-service-resume")
    public interface CityFeignClient {
      //调⽤的请求路径
      @RequestMapping(value = "/city/openstate/{userId}",method=RequestMethod.GET)
      public Integer findOpenState(@PathVariable(value = "userId")Long userId);
    }
    注意:
      1)@FeignClient注解的name属性⽤于指定要调⽤的服务提供者名称,和服务提供者yml⽂件中spring.application.name保持⼀致
      2)接⼝中的接⼝⽅法,就好⽐是远程服务提供者Controller中的Hander⽅法(只不过如同本地调⽤了),那么在进⾏参数绑定的时,可以使⽤@PathVariable、@RequestParam、@RequestHeader等,这也是OpenFeign对SpringMVC注解的⽀持,但是需要注意value必须设置,否则会抛出异常

    4、调用 

    @Autowired
    private CityFeignClient cityFeignClient;

    在服务端按照方法的调用即可。

    Feign中http连接池优化

    https://www.jianshu.com/p/8bca50cb11d8

  • 相关阅读:
    Java学习-060-Springboot
    PySe-013-指定安装源安装模块 + 修改安装源
    Linux-016-Centos Shell 遍历文本信息,通过流水号批量获取日志信息并保存结果
    Linux-015-Centos mysql 创建用户、数据库、授权、建表、数据插入
    Linux-014-Centos 开放端口 3306
    Linux-013-Centos mysql 5.6.50 修改字符集为 utf8
    Linux-012-Centos mysql 5.6.50 忘记密码,重置密码
    Linux-011-Centos 使用 yum 安装 mysql 5.6.50
    Linux-010-Centos 使用 yum 安装 pip
    Linux-009-Centos 安装 YUM
  • 原文地址:https://www.cnblogs.com/niunafei/p/13603345.html
Copyright © 2011-2022 走看看