微服务模块-openfeign

微服务 专栏收录该内容
8 篇文章 0 订阅

介绍

作为Spring Cloud的子项目之一,Spring Cloud OpenFeign以将OpenFeign集成到Spring Boot应用中的方式,为微服务架构下服务之间的调用提供了解决方案。首先,利用了OpenFeign的声明式方式定义Web服务客户端;其次还更进一步,通过集成Ribbon或Eureka实现负载均衡的HTTP客户端。

配置

启动类添加注解:
@EnableFeignClients

新建接口,添加feignclient注解

@FeignClient(name = "myServiceName", configuration = MyConfiguration.class, ...)
public interface MyService {
    @RequestMapping("/")
    public String getName();
}

该接口请求路径和参数跟调用的接口保持一致

特性

1.通信方式变更(okhttp/httpclient)

feign通过jdk中的HttpURLConnection向下游服务发起http请求, 但是缺乏连接池的支持,在达到一定流量的后服务肯定会出问题

  1. pom.xml中,加入对OkHttp的依赖
<dependency>
  <groupId>com.squareup.okhttp3</groupId>
  <artifactId>okhttp</artifactId>
  <version>3.10.0</version>
</dependency>
  1. application.yaml中
# 只能启用一个 
feign:
okhttp:
enabled: true
httpclient: 
enabled: false

2.日志

OpenFeign的日志级别有:
NONE: 默认的,不显示任何日志
BASIC: 仅记录请求方法、URL、响应状态码以及执行时间
HEADERS:除了BASIC 中自定义的信息外,还有请求和响应的信息头
FULL: 除了HEADERS中定义的信息外, 还有请求和响应的正文以及元数据。

1.自己写一个配置类

@Configuration
public class OpenFeignLogConfig {
@Bean
Logger.Level feignLoggerLeave(){
return Logger.Level.FULL;
}
}

2.配置文件

logging:
level:
# feign日志以什么级别监控哪个接口
com.king.springcloud.service.OrderFeignService: debug

在这里插入图片描述

3.原理:

Feign要做的事
1.通过主类上的EnableFeignClients 注解开启FeignClient;

2.程序启动后,会扫描所有FeignClient 注解的类,并将这些信息注入到IOC 容器中;

3.接口被调用时,通过jdk代理,以及反射(Spring处理注解的方式),来生成具体的Reqest

4.Request 交给httpclient处理,这里的httpclient 可以是OkHttp,也可以是HttpUrlConnection

5.结合Ribbon 实现负载均衡

  • 1
    点赞
  • 9
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值