当前位置: 首页 > news >正文

【SpringCloud学习笔记】Feign

Feign 的使用

  • 什么是Feign

Feign是声明性的web服务客户端。它使编写web服务客户端更加容易,它封装类Ribbon和RestTemplate

  • Feign vs OpenFeign

1、Feign是Netflix公司写的,是SpringCloud组件中的一个轻量级RESTful的HTTP服务客户端,是SpringCloud中的第一代负载均衡客户端
2、OpenFeign是SpringCloud自己研发的,在Feign的基础上支持了Spring MVC的注解,如@RequesMapping等等。是SpringCloud中的第二代负载均衡客户端
3、Feign本身不支持Spring MVC的注解,使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务
4、OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务

  • 如何在项目中使用
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

搭建产品服务者,消费者

在这里插入图片描述

  • yaml配置文件
server:
  port: 1001
spring:
  application:
    name: product-service
  datasource: # 数据源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: root

eureka:
  instance:
    hostname: 127.0.0.1
  client:
    register-with-eureka: true #默认值是true,是否将自己注册到注册中心
    fetch-registry: false # 默认值是true,是否从注册中心拉取服务
    service-url: #注册中信对外暴露的注册中心地址
      defaultZone: http://localhost:8761/eureka/

在这里插入图片描述

  • pom.xml文件中引入OpenFeign 组件
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  • 消费者定义一个ProductServiceApi接口,在接口上添加@FeignClient注解,括号内是服务名
@FeignClient("product-service")
public interface ProductServiceApi {

    @GetMapping(value = "/product/selectAllProductInfo")
    List<ProductEntity> selectAllProductInfo();
}
  • 在业务处理的service中引入ProductServiceApi
@Service
public class ProductServiceImpl implements ProductService {

    @Autowired
    private ProductServiceApi productServiceApi;

    @Override
    public List<ProductEntity> selectAllProductInfo() {
        return productServiceApi.selectAllProductInfo();
    }
}
  • 启动类上添加@EnableFeignClients注解,在服务启动时,@FeignClints修饰的接口会被Spring扫描到,基于动态代理生成本地JDK Proxy代理对象实例,然后将这些代理实例注册到IOC容器中,当远程接口被调用时,由Proxy代理实例去完成真正的远程访问
@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient
public class ProductConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProductConsumerApplication.class, args);
    }
}
  • openfeign的超时时间,默认的超时时间是1s,如果请求超过1s就会报读取超时错误
    在这里插入图片描述
    在配置文件中配置openfeign的超时时间
feign:
  client:
    config:
      default:
        # 连接超时时间
        connectTimeout: 3000
        # 请求处理超时时间
        readTimeout: 3000

相关文章:

  • 长治哪里做网站/刷关键词怎么刷
  • 遵义在线网站建设/哈尔滨优化推广公司
  • 网站建设模板简单/怎么样建一个网站
  • java+做网站后台/怎样建网站卖东西
  • 嘉兴seo网站建设费用/电子商务培训
  • 建行官方网站多少/seow
  • 黑猫带你学UFS协议第8篇:UFS标志(Flags)和属性(Atrributes)详解
  • 你一定要知道的代码规范(进阶)
  • [Vue]插件
  • 大话西游服务端开服架设服务器搭建教程
  • 第三章Linux环境基础开发工具使用(yum+rzsz+vim+g++和gcc+gdb+make和Makefile+进度条+git)
  • C++(类与对象)是纸老虎吗?
  • 这些Java基础知识,诸佬们都还记得嘛(学习,复习,面试都可)
  • 00后表示真干不过,部门新来的00后测试员已把我卷崩溃,想离职了...
  • 每日一练<2>
  • Vue——组件间常用通信方式详解
  • 【鸟哥杂谈】搭建自己的本地mqtt服务器 emqx
  • 【开发心得】electron iohook集成使用方案