• Spring Cloud Alibaba快速整合OpenFeign


    spring cloud alibaba 整合OpenFeign

    1. Foreign
    • Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。
    • 在Spring Cloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。
    • -Feign是一个声明式的Web服务客户端,让编写Web服务客户端变的更加容易。只需要创建一个接口并添加注解即可 openfeign
    1. OpenForeign
      Spring Cloud openfeign对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Nacos,从而使得Feign的使用更加方便

    2. Feign和OpenFeign的区别:
      Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。Feign的使用方式是:使用Feign的注解定义接口,调用接口,就可以调用服务注册中心的服务。
      OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并且 低耦合调用其他服务。

    整合流程

    直接采用最简单的方式

    1.导入依赖

    <!-- openfeign 远程调用 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 编写调用接口

    无参

    2.1 service(这里写的是clients)

    @FeignClient("nacos-a")
    public interface OrderClients {
        @GetMapping("/port")
        String order();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    2.2 controller

       @GetMapping("/order")
        public String feignAClient(){
            String order = orderClients.order();
            return  order;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    3.设置其最大链接时间

    配置类

    @Configuration
    public class FeignConfig
    {
        //配置日志
        @Bean
        Logger.Level feignLoggerLevel()
        {
            return Logger.Level.FULL;
        }
        //配置最大链接时间 如果 使用 Request.Options 则默认
    //    Connect Timeout: 10 seconds   链接时间
    //    Read Timeout: 60 seconds      读取时间
    //    Follow all 3xx redirects
    // 不配置这个
    
        @Bean
        public Request.Options options() {
            return new Request.Options(5L,TimeUnit.SECONDS,10L,TimeUnit.SECONDS,true);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    也可使用配置文件 选择一个即可

    # 这里设置order-service,应使用自己的
    feign.client.config.order-service.connectTimeout=5000   
    # 连接超时时间,默认10s order-service:  #对应微服务
    feign.client.config.order-service.readTimeout=10000     
    # 请求处理超时时间,默认60s
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.1 配置文件

    #配置name
    spring.application.name=nacos-a
    server.port = 3030
    #Nacos服务发现注册中心
    spring.cloud.nacos.discovery.server-addr=192.168.14.58:8848
    #spring.cloud.nacos.discovery.register-enabled=true
    logging.level.com.hb = debug
    #配置具体某一个服务个性化规则
    spring.cloud.nacos.discovery.ip=192.168.14.53
    spring.cloud.nacos.discovery.metadata.name=lihaibo
    #nacos-a.ribbon.NFLoadBalancerRuleClassName=com.hb.rule.MyRule
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.2 client

    @FeignClient("nacos-a")
    public interface OrderClients {
        @GetMapping("/port")
        String order();
    
        @GetMapping("/sleep")
        String sleep(@RequestParam("second") Integer second);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.3 接口

    @GetMapping(“/sleep”)
    public String sleep(@RequestParam(“s”) Integer s){
    String order = orderClients.sleep(s);
    return order;
    }

    3.4 被访问的controller

    @GetMapping("/sleep")
    public String  sleep(Integer second){
        ThreadUtil.safeSleep(second * 1000);
        return "睡了"+second+"s";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

  • 相关阅读:
    【Docker 内核详解】cgroups 资源限制(一):概念、作用、术语
    [附源码]Python计算机毕业设计Django的文成考研培训管理系统
    “竞速”智能网联汽车,领头雁为何是长沙?
    7-13 TreeSet自定义排序
    LVS负载均衡集群
    C语言实现线索化二叉树(先序、中序、后序)
    【SpringBoot实战】视图技术-Thymeleaf
    一种基于随机接入时机动态分配的接入方案
    面试题:海量数据处理利器,布隆过滤器
    分块查找 确定查找位置
  • 原文地址:https://blog.csdn.net/weixin_63558979/article/details/133078755