【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、重新啟動項目,進行服務調用測試

    查看控制台輸出日志:

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM