最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springcloud之Feign超時問題的解決

 更新時間:2021年06月24日 09:51:30   作者:Moshow鄭鍇  
這篇文章主要介紹了springcloud之Feign超時問題的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

問題背景

最近公司項目有個功能需進行三層Feign調(diào)用,且還要調(diào)外部接口,延遲挺大,造成Feign一直提示Read timed out executing POST。

feign.RetryableException: Read timed out executing POST http://******
        at feign.FeignException.errorExecuting(FeignException.java:67)
        at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104)
        at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
        at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
        at com.sun.proxy.$Proxy113.getBaseRow(Unknown Source)
Caused by: java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:170)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:704)
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1569)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
        at feign.Client$Default.convertResponse(Client.java:152)
        at feign.Client$Default.execute(Client.java:74)

解決方案

首先,我們看下Feign的簡介

Feign 是一個聲明式的web服務(wù)客戶端,這便得編寫web服務(wù)客戶端更容易,使用Feign 創(chuàng)建一個接口并對它進行注解,它具有可插拔的注解支持包括Feign注解與JAX-RS注解,F(xiàn)eign還支持可插拔的編碼器與解碼器,Spring Cloud 增加了對 Spring MVC的注解,Spring Web 默認(rèn)使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的負(fù)載均衡的HTTP客戶端 Feign.

這么說吧,F(xiàn)eign接口調(diào)用分兩層,Ribbon的調(diào)用和Hystrix調(diào)用,理論上設(shè)置Ribbon的時間即可,但是Ribbon的超時時間和Hystrix的超時時間需要結(jié)合起來,按照木桶原則最低的就是Feign的超時時間,建議最好配置超時時間一致。經(jīng)過配置一下application設(shè)置后,完美解決了問題。因為第三方接口中需要3~20秒不等的時間,所以這個數(shù)值也是根據(jù)自己的業(yè)務(wù)系統(tǒng)情況設(shè)置的。

application.xml

#hystrix的超時時間
hystrix:
    command:
        default:
            execution:
              timeout:
                enabled: true
              isolation:
                    thread:
                        timeoutInMilliseconds: 30000
#ribbon的超時時間
ribbon:
  ReadTimeout: 30000
  ConnectTimeout: 30000

springcloud之Feign 負(fù)載均衡請求超時時間

SpringCloud:Greenwich.SR4

SpringBoot:2.1.9.RELEASE

Feign調(diào)用服務(wù)的默認(rèn)時長是1秒鐘,也就是如果超過1秒沒連接上或者超過1秒沒響應(yīng),那么會相應(yīng)的報錯。

但是在實際的業(yè)務(wù)中,我們的服務(wù)可能因為特別原因(網(wǎng)絡(luò)、處理壓力大等)導(dǎo)致相應(yīng)速度超過1秒鐘,那么就會報錯,下面我們就來處理如何手動配置Feigin的負(fù)載均衡超時等參數(shù)

全局配置

SpringCloud負(fù)載均衡底層用的就是Ribbon

#--------------Feign負(fù)載均衡配置 配置全局超時時間
ribbon:
  ConnectTimeout: 5000 #請求連接的超時時間,默認(rèn)時間為1秒
  ReadTimeout: 5000 #請求處理的超時時間

5秒沒有響應(yīng)成功就報如下錯誤(真實情況下,會比5s多一些,因為發(fā)送請求也需要時間的,模擬超時可以在請求處理的方法上用Thread.sleep()設(shè)置休眠時間超過5s)

局部配置(就是指定提供者)

#--------------Feign負(fù)載均衡配置 局部配置超時時間等
feign-product-provider: #指定配置的服務(wù)名稱
  ribbon:
    OkToRetryOnAllOperations: true # 對所有請求都進行重試
    MaxAutoRetries: 2 # 對當(dāng)前實例的重試次數(shù)
    MaxAutoRetriesNextServer: 0 # 切換實例的重試次數(shù)(集群狀態(tài)下,其它對其它實例服務(wù)重試的次數(shù))
    ConnectTimeout: 3000 # 請求連接的超時時間
    ReadTimeout: 3000 # 請求處理的超時時間

上述提到的服務(wù)名稱如下配置

spring:
  application:
    name: feign-product-provider # 隨意設(shè)置

執(zhí)行的代碼

輸出結(jié)果

不是一共重試兩次嗎?這里邊就涉及到了一個公式

共重試次數(shù) = (MaxAutoRetries+MaxAutoRetriesNextServer+(MaxAutoRetries * MaxAutoRetiresNextServer)
      = 2 + 0 + (2 * 0)
      = 2

在加上我們手動請求一次那就是:2 + 1=3次

公式很重要!

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • @RequestMapping對不同參數(shù)的接收方式示例詳解

    @RequestMapping對不同參數(shù)的接收方式示例詳解

    Spring?MVC框架中,@RequestMapping注解用于映射URL到控制器方法,不同的參數(shù)類型如簡單參數(shù)、實體參數(shù)、數(shù)組參數(shù)、集合參數(shù)、日期參數(shù)和JSON參數(shù),本文給大家介紹@RequestMapping對不同參數(shù)的接收方式,感興趣的朋友一起看看吧
    2024-10-10
  • Java線程安全中的單例模式

    Java線程安全中的單例模式

    這篇文章主要介紹了Java線程安全中的單例模式,需要的朋友可以參考下
    2015-02-02
  • Java實現(xiàn)快速排序過程分析

    Java實現(xiàn)快速排序過程分析

    今天小編就為大家分享一篇關(guān)于Java實現(xiàn)快速排序過程分析,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Mybatis之Mapper動態(tài)代理實例解析

    Mybatis之Mapper動態(tài)代理實例解析

    這篇文章主要介紹了Mybatis之Mapper動態(tài)代理實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • java實現(xiàn)TCP socket和UDP socket的實例

    java實現(xiàn)TCP socket和UDP socket的實例

    這篇文章主要介紹了本文主要介紹了java實現(xiàn)TCP socket和UDP socket的實例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java實現(xiàn)文件批量重命名,移動和刪除

    Java實現(xiàn)文件批量重命名,移動和刪除

    這篇文章主要為大家介紹了如何利用Java語言實現(xiàn)批量重命名,批量移動文件,批量刪除tmp文件等功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • SpringSecurity Jwt Token 自動刷新的實現(xiàn)

    SpringSecurity Jwt Token 自動刷新的實現(xiàn)

    這篇文章主要介紹了SpringSecurity Jwt Token 自動刷新的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Spring+SpringMVC+Hibernate項目環(huán)境搭建的步驟(圖文)

    Spring+SpringMVC+Hibernate項目環(huán)境搭建的步驟(圖文)

    這篇文章主要介紹了Spring+SpringMVC+Hibernate項目環(huán)境搭建的步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JAVA記住密碼功能的實現(xiàn)代碼

    JAVA記住密碼功能的實現(xiàn)代碼

    這篇文章主要介紹了JAVA記住密碼功能的實現(xiàn)代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Spring bean加載控制實現(xiàn)方法

    Spring bean加載控制實現(xiàn)方法

    很多時候我們需要根據(jù)不同的條件在容器中加載不同的Bean,或者根據(jù)不同的條件來選擇是否在容器中加載某個Bean,這就是Bean的加載控制,一般我們可以通過編程式或注解式兩種不同的方式來完成Bean的加載控制
    2022-12-12

最新評論

吴忠市| 利辛县| 平潭县| 苏州市| 旌德县| 三门峡市| 阿荣旗| 新乡县| 通河县| 胶南市| 进贤县| 崇明县| 克山县| 望奎县| 胶南市| 庆安县| 陈巴尔虎旗| 商丘市| 东兰县| 金阳县| 广东省| 逊克县| 白朗县| 鄱阳县| 卓资县| 曲靖市| 平度市| 岚皋县| 太仓市| 长顺县| 尚志市| 红安县| 利辛县| 博白县| 辰溪县| 顺昌县| 青神县| 榕江县| 施秉县| 丹凤县| 时尚|