代码改变世界

OpenFeign的引入---springcloud-02

2022-09-12 11:41  ly772186472  阅读(318)  评论(0)    收藏  举报

二、OpenFeign的引入

1、引入依赖

service-base模块中配置OpenFeign的依赖(实际是在服务消费者端--(客户端,或者说使用方)需要OpenFeign的依赖)
<!--服务调用-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2、启动类添加注解

在service-sms的启动类添加如下注解
@EnableFeignClients

三、接口的远程调用

service-sms中添加远程调用

1、CoreUserInfoClient

接口:
package com.guigu.srb.sms.client;
@FeignClient(value = "service-core")
public interface CoreUserInfoClient {
    @GetMapping("/api/core/userInfo/checkMobile/{mobile}")
    boolean checkMobile(@PathVariable String mobile);
}

2、ApiSmsController

引入client

@Resource
private CoreUserInfoClient coreUserInfoClient;

在获取验证码方法中调用远程方法校验手机号是否存在

//手机号是否注册
boolean result = coreUserInfoClient.checkMobile(mobile);
System.out.println("result = " + result);
Assert.isTrue(result == false, ResponseEnum.MOBILE_EXIST_ERROR);
//生成验证码

四、超时控制

openfeign默认的连接超时时间为1秒,测试时很可能会出现远程调用超时错误。
可以在配置文件中添加如下配置:
feign:
  client:
    config:
      default:
        connectTimeout: 10000 #连接超时配置
        readTimeout: 600000 #执行超时配置

五、OpenFeign日志

1、作用

OpenFeign提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解OpenFeign中Http请求的细节。即对OpenFeign远程接口调用的情况进行监控和日志输出。

2、日志级别

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

3、配置日志bean

在service-base中创建配置文件
package com.guigu.srb.base.config;
@Configuration
public class OpenFeignConfig {
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }
}

  

4、开启日志

sms的application.yml中指定监控的接口,以及日志级别
logging:
     level:
       com.guigu.srb.sms.client.CoreUserInfoClient: DEBUG #以什么级别监控哪个接口    

5、修改logback日志级别

修改日志的level为DEBUG
 
<!-- 开发环境和测试环境 -->
<springProfile name="dev,test">
        <logger name="com.atguigu" level="DEBUG">    
                <appender-ref ref="CONSOLE" />
          </logger>
</springProfile>

6、查看日志输出

补充:
HTTP 是一种无状态协议,客户端向服务器发送一个 TCP 请求,服务端响应完毕后断开连接。
如果客户端向服务器发送多个请求,每个请求都要建立各自独立的连接以传输数据。
HTTP 有一个 KeepAlive 模式,它告诉 webserver 在处理完一个请求后保持这个 TCP 连接的打开状态。
若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
timeout 来指定 KeepAlive 的超时时间(timeout)。指定每个 TCP 连接最多可以保持多长时间。