Spring Cloud Alibaba快速整合OpenFeign

文章目录

  • spring cloud alibaba 整合OpenFeign
  • 整合流程
    • 1.导入依赖
    • 2. 编写调用接口
      • 2.1 service(这里写的是clients)
      • 2.2 controller
      • 3.设置其最大链接时间
      • 4.1 配置文件
      • 4.2 client
      • 4.3 接口
      • 4.4 被访问的controller

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>

2. 编写调用接口

无参

2.1 service(这里写的是clients)

@FeignClient("nacos-a")
public interface OrderClients {
    @GetMapping("/port")
    String order();
}

Spring Cloud Alibaba快速整合OpenFeign_第1张图片

2.2 controller

   @GetMapping("/order")
    public String feignAClient(){
        String order = orderClients.order();
        return  order;
    }

Spring Cloud Alibaba快速整合OpenFeign_第2张图片

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);
    }
}

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

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

4.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

4.2 client

@FeignClient("nacos-a")
public interface OrderClients {
    @GetMapping("/port")
    String order();

    @GetMapping("/sleep")
    String sleep(@RequestParam("second") Integer second);
}

4.3 接口

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

4.4 被访问的controller

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

Spring Cloud Alibaba快速整合OpenFeign_第3张图片

你可能感兴趣的:(spring,cloud,openfeign)