• 【SpringCloud】OpenFeign服务超时与日志输出(九)


    OpenFeign服务超时

      搭建项目:参考上一章项目:【SpringCloud】OpenFeign服务调用(八)

      情景:在SpringCloud微服务调用的时候,肯能某些提供的服务没有及时响应,或者服务处理时间较长,可能造成调用方超时。如果使用OpenFeign调用服务的话,会自动断开,并报错。如果确实时间耗时长,可以设置超时时间

      1、在服务提供者controller中,编写如下服务(耗时3秒),内容如下:

    1 @GetMapping(value = "/payment/feign/timeout")
    2 public String paymentFeignTimeout(){
    3     try {
    4         TimeUnit.SECONDS.sleep(3);
    5     } catch (InterruptedException e) {
    6         e.printStackTrace();
    7     }
    8     return serverPort;
    9 }

      2、在消费者的FeignClient中添加接口

    1 @Component
    2 // Feign客户端
    3 @FeignClient("CLOUD-PAYMENT-SERVICE")
    4 public interface PaymentFeignService {
    5     @GetMapping(value = "/payment/feign/timeout")
    6     public String paymentFeignTimeout();
    7 }

      3、编写消费者controller中,编写调用方法

    1 @GetMapping(value = "/consumer/payment/feign/timeout")
    2 public String paymentFeignTimeout() {
    3     return paymentFeignService.paymentFeignTimeout();
    4 }

      4、测试调用方法

        启动项目,使用地址:http://localhost:7997/consumer/payment/feign/timeout

        

        可以看到应为服务提供者的服务超时,导致调用者报超时错误

      5、修改配置文件,增加一下配置,修改Ribbon的超时时间

    1 # 设置feign客户端超时时间(OpenFeign默认支持ribbon)
    2 ribbon:
    3   # 指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
    4   ReadTimeout: 5000
    5   # 指的是建立连接后从服务器读取到可用资源所用的军事家
    6   ConnectTimeout: 5000

      6、重新启动项目,使用地址:http://localhost:7997/consumer/payment/feign/timeout

        

    OpenFeign日志输出

      Feign对日志的处理非常灵活,可为每个Feign客户端指定日志记录策略,每个Feign客户端都会创建一个logger。默认情况下,logger的名称是Feigh接口的完整类名。需要注意的是,Feign的日志打印只会对DEBUG级别做出响应。

      Feign有一下日志级别:

      NONE:默认的,不显示任何日志

      BASIC:仅记录请求方法、URL、响应状态码及执行时间

      HEADERS:出了BASIC中定义的信息之外,还有请求和响应的头信息

      FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及元素

      示例

      1、新增Feign配置类,配置Feign日志

     1 package com.test.springcloud.config;
     2 
     3 import feign.Logger;
     4 import org.springframework.context.annotation.Bean;
     5 import org.springframework.context.annotation.Configuration;
     6 
     7 
     8 @Configuration
     9 public class FeignConfig {
    10 
    11     @Bean
    12     public Logger.Level feignLoggerLevel(){
    13         return Logger.Level.FULL;
    14     }
    15 
    16 }

      2、配置文件中修改,日志级别,增加内容如下:

    1 logging:
    2   level:
    3     com.test.springcloud.service.PaymentFeignService: debug

      3、重新启动项目,进行服务调用测试

        查看控制台输出日志:

        

  • 相关阅读:
    WCF ria services完美登陆功能(10)
    利用DYCOM快速建立wcf服务器端
    DYCom简要介绍
    断剑
    生命的价值
    飞翔的蜘蛛
    JSP中如何获取select标签选中的值
    wrapClass
    iconfont 在vue项目中的应用(iconcomponent组件)
    正则表达式
  • 原文地址:https://www.cnblogs.com/h--d/p/12691173.html
Copyright © 2020-2023  润新知