哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Feign的超時(shí)時(shí)間如何設(shè)置呢?

jf_ro2CN3Fa ? 來源:三友的java日記 ? 2023-11-15 10:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天來聊一聊前段時(shí)間看到的一個(gè)面試題,也是在實(shí)際項(xiàng)目中需要考慮的一個(gè)問題,F(xiàn)eign 的超時(shí)時(shí)間如何設(shè)置?

Feign 的超時(shí)時(shí)間設(shè)置方式并不固定,它取決于 Feign 在項(xiàng)目中是如何使用的,不同的使用方式,超時(shí)時(shí)間設(shè)置方式也不大相同,甚至還可能有坑。

前置知識

由于文章會涉及到 Feign 的底層知識,如果不懂點(diǎn) Feign 的基本概念的話,后面就看不下去了。

所以為了方便不了解 Feign 的小伙伴也能夠讀得懂文章,這里我就簡單地說說 Feign 的原理,點(diǎn)到為止,雖然不深入,但足夠應(yīng)付這篇文章了。

Feign 的作用

在項(xiàng)目中,我們經(jīng)常需要調(diào)用第三方提供的 Http 接口,此時(shí)我們就可以使用一些 Http 框架來實(shí)現(xiàn),比如 HttpClient。

publicclassHttpClientDemo{

publicstaticvoidmain(String[]args)throwsException{
//創(chuàng)建一個(gè)HttpClient
HttpClienthttpClient=HttpClientBuilder.create().build();

//構(gòu)建一個(gè)get請求
HttpGethttpGet=newHttpGet("http://192.168.100.1:8080/order/1");

//發(fā)送請求,獲取響應(yīng)
HttpResponsehttpResponse=httpClient.execute(httpGet);
HttpEntityhttpEntity=httpResponse.getEntity();

//讀出響應(yīng)值
Stringresponse=EntityUtils.toString(httpEntity);

System.out.println("Response:"+response);
}

}

如果項(xiàng)目中只有一兩個(gè)這種第三方接口這樣寫還行,但是一旦這種三方接口過多的話,每次都得這樣組裝參數(shù),發(fā)送請求,寫一堆同樣的代碼,就顯然很麻煩了。

所以為了簡化發(fā)送 Http 請求的開發(fā),減少重復(fù)代碼,F(xiàn)eign 就出現(xiàn)了。

Feign 是一個(gè)聲明式的 Http 框架

當(dāng)你需要調(diào)用 Http 接口時(shí),你需要聲明一個(gè)接口,加一些注解就可以了。而像組裝參數(shù)、發(fā)送 Http 請求等重復(fù)性的工作都交給 Feign 來完成。

Feign 的原理

雖然有了接口,但是僅僅有接口是不夠的,因?yàn)榻涌谟植荒軇?chuàng)建對象,我們得需要對象。

Feign 為了方便我們?yōu)榻涌趧?chuàng)建對象,提供的 Feign.Builder 這個(gè)內(nèi)部類。

8d711d92-82d4-11ee-939d-92fbcf53809c.png

這個(gè)類的作用就是解析接口的上的注解,為接口生成一個(gè)動態(tài)代理對象,后面通過這個(gè)代理對象就可以發(fā)送請求了。

這個(gè)內(nèi)部類有很多屬性,這些屬性都是 Feign 的核心組件。

在這些核心的組件中有一個(gè)叫 Client 的,上圖中我圈出來了。

8da0279a-82d4-11ee-939d-92fbcf53809c.png

這個(gè) Client 類劃個(gè)重點(diǎn),非常非常重要,本文討論的東西跟他有密切關(guān)系。

它只有一個(gè)方法 Response execute (Request request, Options options)

方法的第一個(gè)參數(shù) Request 就是封裝了 http 請求的 url、請求方法,請求頭、請求體之類的參數(shù)。

8db7c242-82d4-11ee-939d-92fbcf53809c.png

第二個(gè)參數(shù) Options 就是本文的主題,封裝了超時(shí)時(shí)間。

8dcc3a2e-82d4-11ee-939d-92fbcf53809c.png

返回值 Response就是封裝了一些響應(yīng)碼 status、響應(yīng)頭之類的。

8ddfaed8-82d4-11ee-939d-92fbcf53809c.png

所以通過方法的參數(shù)和返回值也可以猜出來,這個(gè) Client 作用是用來組裝 HTTP 請求參數(shù),發(fā)送 HTTP 請求的。并且 HTTP 請求超時(shí)時(shí)間是根據(jù)傳給 Client 的 Options 參數(shù)來決定的。

8df27d92-82d4-11ee-939d-92fbcf53809c.png

Feign 單獨(dú)使用時(shí)超時(shí)時(shí)間設(shè)置

Feign 本身就是一個(gè) HTTP 客戶端,可獨(dú)立使用,F(xiàn)eign 提供了兩種超時(shí)時(shí)間設(shè)置方式。

1、通過 Feign.Builder 設(shè)置

前面提到,F(xiàn)eign.Builder 的作用是為接口的動態(tài)代理對象的。

Feign.Builder 里面有很多屬性,其中就有關(guān)于超時(shí)時(shí)間的屬性 Options。

8e04ed10-82d4-11ee-939d-92fbcf53809c.png

如果你不設(shè)置,那么超時(shí)時(shí)間就是默認(rèn)的。

8e0f6c36-82d4-11ee-939d-92fbcf53809c.png

默認(rèn)的就是連接超時(shí) 10s,讀超時(shí) 60s。

所以可以通過設(shè)置 Feign.Builder 中的 options 來設(shè)置超時(shí)時(shí)間。

來個(gè) demo

環(huán)境準(zhǔn)備,就是一個(gè)簡單的 SpringBoot 項(xiàng)目,引入一個(gè) Feign 的依賴。

這里演示的是 Feign 原生的使用方式,脫離于 SpringCloud 環(huán)境,所以 Spring 的那些 @GetMappring 就不支持了,改用 Feign 本身提供的注解。

測試代碼

這里面的請求路徑都是不存在的,因?yàn)槲覀冎魂P(guān)心傳給 Client 的 Options 參數(shù)值。

Client 在我們不設(shè)置的時(shí)候,就用默認(rèn)的實(shí)現(xiàn) Client.Default。

8e208a48-82d4-11ee-939d-92fbcf53809c.png

斷點(diǎn)打到 execute 方法的實(shí)現(xiàn),運(yùn)行,走起。

8e39bab8-82d4-11ee-939d-92fbcf53809c.png

結(jié)果就是我們設(shè)置的 5s。

2、在接口方法參數(shù)設(shè)置

除了在通過 Feign.Builder 時(shí)設(shè)置之外,F(xiàn)eign 還支持在接口的方法參數(shù)上設(shè)置。

此時(shí)你只需要在接口的方法上加一個(gè) Options 類型的參數(shù)。

@RequestLine("GET/user/{userId}")
UserqueryUser(@Param("userId")IntegeruserId,Request.Optionsoptions);

這樣在傳參數(shù)時(shí)就可以設(shè)置超時(shí)時(shí)間了。

Useruser=client.queryUser(123,newRequest.Options(3,TimeUnit.SECONDS,3,TimeUnit.SECONDS,true));

同樣地,debug 就可以看見我們設(shè)置的 3s 了。

8e4f74d4-82d4-11ee-939d-92fbcf53809c.png

這兩種設(shè)置超時(shí)時(shí)間的主要區(qū)別就是方法參數(shù)設(shè)置超時(shí)時(shí)間的優(yōu)先級高于 Feign.Builder 設(shè)置的超時(shí)時(shí)間。

用一張圖來總結(jié)一下上面的關(guān)系。

8e6506be-82d4-11ee-939d-92fbcf53809c.png

所以,如果你單獨(dú)使用 Feign 的時(shí)候,你就可以通過如上的兩種方式來設(shè)置超時(shí)時(shí)間。

SpringCloud 下 Feign 單獨(dú)使用超時(shí)時(shí)間設(shè)置

在 SpringCloud 環(huán)境下,只是對 Feign 進(jìn)行了一層包裝,所以即使沒有 Ribbon 和注冊中心,F(xiàn)eign 也是可以單獨(dú)使用的,但是用法有點(diǎn)變化

注解都換成 SpringMVC 的注解

接口上需要加 @FeignClient 注解

用 @EnableFeignClients 掃描這些接口

不過,默認(rèn)情況下 Feign 還是需要結(jié)合 Ribbon 來使用的。

如果你只想單獨(dú)使用 Feign,那么就設(shè)置一下 @FeignClient 注解的 url 屬性,指定請求的地址和端口就可以了。

8e78f232-82d4-11ee-939d-92fbcf53809c.png

所以,既然只是包裝,前面提到的兩種方式設(shè)置超時(shí)時(shí)間當(dāng)然可以繼續(xù)使用:

通過 Feign.Builder

通過接口的方法參數(shù)

方法參數(shù)設(shè)置形式跟前面提到的一模一樣,但是通過 Feign.Builder 來設(shè)置卻不太一樣。

由于 SpringCloud 會自己創(chuàng)建 Feign.Builder,不需要我們創(chuàng)建,所以在設(shè)置 Options 時(shí),Spring 提供了兩種快捷方式來設(shè)置。不過最終還是設(shè)置到 Feign.Builder 中。

1、聲明一個(gè) Options Bean

Spring 在構(gòu)建 Feign.Builder 的時(shí),會從容器中查找 Options 這個(gè) Bean,然后設(shè)置到 Feign.Builder 中。

@Configuration
publicclassFeignConfiguration{

@Bean
publicRequest.Optionsoptions(){
returnnewRequest.Options(8,TimeUnit.SECONDS,8,TimeUnit.SECONDS,true);
}

}

此時(shí) debug 就可以看到設(shè)置到 Feign.Builder 的代碼。

8e98cd64-82d4-11ee-939d-92fbcf53809c.png

這段代碼在 FeignClientFactoryBean 中的 configureUsingConfiguration 方法中.

2、配置文件中設(shè)置

除了聲明 Bean 之外,Spring 還提供了通過配置文件的方式配置,如下:

同樣地,debug 就可以看見。

8ebb1dec-82d4-11ee-939d-92fbcf53809c.png

這段代碼在 FeignClientFactoryBean 中的 configureUsingConfiguration 方法中。

2、配置文件中設(shè)置

除了聲明 Bean 之外,Spring 還提供了通過配置文件的方式配置,如下:

feign:
client:
config:
default:
connectTimeout:10000
readTimeout:10000

同樣地,debug 就可以看見。

這段代碼在 FeignClientFactoryBean 中的 configureUsingConfiguration 方法中。

聲明 Bean 和配置文件都可以設(shè)置,那么同時(shí)設(shè)置哪種優(yōu)先級高呢?

如無特殊配置,遵守 SpringBoot 本身的配置規(guī)定

約定 > 配置 > 編碼

所以基于這個(gè)規(guī)定,配置文件的配置優(yōu)先級大于手動聲明 Bean 的優(yōu)先級。

到這,我們又學(xué)到了兩種 Spring 為了方便我們設(shè)置 Feign.Builder 提供的配置方式:

聲明 Options Bean

配置文件

把他們倆加到前面畫的圖中:

8ed7c9f6-82d4-11ee-939d-92fbcf53809c.png

所以,如果你使用了 SpringCloud 提供的方式來使用 Feign,那么就可以通過聲明 OptionsBean 和配置文件的方式更加方便地來設(shè)置超時(shí)時(shí)間。

最終其實(shí)還是通過 Feign.Builder 來設(shè)置的。

SpringCloud 下通過 Ribbon 來設(shè)置

當(dāng) Feign 配合 Ribbon 使用時(shí),除了上面兩種方式之外,還可以通過 Ribbon 來設(shè)置超時(shí)時(shí)間。

但是這里我不知道你會不會好奇:

Ribbon 不是負(fù)載均衡組件,怎么可以設(shè)置超時(shí)時(shí)間?

跟 Ribbon 的定位有關(guān),除了負(fù)載均衡組件之外,Ribbon 也干發(fā)送 HTTP 請求的事,也就是不配合 Feign,他照樣可以發(fā)送 HTTP 請求。

來個(gè)簡單 demo

8eee0c34-82d4-11ee-939d-92fbcf53809c.png

解釋一下上面的代碼意思:

第一步,設(shè)置 user 服務(wù)的兩個(gè)服務(wù)實(shí)例地址;

第二步,獲取 user 服務(wù)對應(yīng)的 RestClient,這 RestClient 就可以用來發(fā)送 HTTP 請求;

第三步,構(gòu)建一個(gè) HTTP 請求;

第四步,就是發(fā)送 HTTP 請求,以負(fù)載均衡的方式。

這樣,此時(shí)就會從兩個(gè)服務(wù)實(shí)例中根據(jù)負(fù)載均衡選取一個(gè)服務(wù)地址發(fā)送 HTTP 請求,Ribbon 既然可以發(fā)送 HTTP 請求,那么自然而然就可以設(shè)置超時(shí)時(shí)間

Feign 在整合 Ribbon 的時(shí)候,為了統(tǒng)一配置,就默認(rèn)將自己的超時(shí)時(shí)間交由 Ribbon 管理

所以,在默認(rèn)情況下,F(xiàn)eign 的超時(shí)時(shí)間可以由 Ribbon 配置。而 Ribbon 默認(rèn)連接和讀超時(shí)時(shí)間只有 1s,所以在默認(rèn)情況下,F(xiàn)eign 的超時(shí)時(shí)間只有 1s。

8f10323c-82d4-11ee-939d-92fbcf53809c.png

IClientConfig 是 Ribbon 的配置類,Ribbon 所有的配置都可以從 IClientConfig 中獲取。

所以,在默認(rèn)情況下,很容易就發(fā)生超時(shí),不過我們可以通過配置文件修改即可。

ribbon:
ConnectTimeout:5000
ReadTimeout:5000

你知道你發(fā)現(xiàn)沒,上面說通過 Ribbon 設(shè)置 Feign 的超時(shí)時(shí)間,一直提到前面一直提到這個(gè)詞“默認(rèn)”。

什么情況下叫默認(rèn)呢?

所謂的默認(rèn),就是當(dāng)你不主動設(shè)置 Feign 的超時(shí)時(shí)間的時(shí)候,就是默認(rèn)。

換句話說,一旦你通過上面說的那些配置方式設(shè)置 Feign 的超時(shí)時(shí)間,就不是默認(rèn)了

此時(shí)通過 Ribbon 設(shè)置的超時(shí)時(shí)間就不會生效了。

Feign 是如何在默認(rèn)情況下將超時(shí)時(shí)間交給 Ribbon 管理的?

要想回答這個(gè)問題,就得先搬出前面反復(fù)提到的 Client 接口了。

在 SpringCloud 的環(huán)境下,有一個(gè) Client 的實(shí)現(xiàn),叫 LoadBalancerFeignClient。

8f1509ce-82d4-11ee-939d-92fbcf53809c.png

通過名字就可以看出,帶有負(fù)載均衡的 Client 實(shí)現(xiàn),負(fù)載均衡的實(shí)現(xiàn)肯定是交給 Ribbon 來實(shí)現(xiàn)的。

所以,當(dāng) Feign 配合 Ribbon 時(shí)用的就是這個(gè) Client 實(shí)現(xiàn)。

既然實(shí)現(xiàn)了 Client 接口,那就看看 execute 方法的實(shí)現(xiàn)邏輯。

8f24c01c-82d4-11ee-939d-92fbcf53809c.png

圖中 getClientConfig 方法就是判斷使用 Feign 或者 Ribbon 配置的核心邏輯。

核心的判斷邏輯就是這一行:

options==DEFAULT_OPTIONS

DEFAULT_OPTIONS 就是一個(gè)超時(shí)時(shí)間的常量。

8f56d156-82d4-11ee-939d-92fbcf53809c.png

當(dāng)上述判斷條件成立時(shí),就會通過 this.clientFactory.getClientConfig(clientName) (clientName) 獲取到 Ribbon 配置。

由于這是 Ribbon 的邏輯,這里就不深扒了,知道是這個(gè)意思就行。

當(dāng)條件不成立時(shí),用 Options 構(gòu)建一個(gè) FeignOptionsClientConfig。

8f7993e4-82d4-11ee-939d-92fbcf53809c.png

FeignOptionsClientConfig 就是簡單地將 Options 配置讀出來,設(shè)置到父類 DefaultClientConfigImpl 超時(shí)時(shí)間配置上。

DefaultClientConfigImpl 就算你不知道是什么也無所謂,你能看出的一件事就是,超時(shí)時(shí)間用的是傳遞給 Client 的 Options 參數(shù)。

所以,綜上,我們的問題就變得非常 easy 了,那就是什么時(shí)候。

options==DEFAULT_OPTIONS

只有當(dāng)這個(gè)條件成立時(shí),才使用 Ribbon 的配置。

這里我們先來捋一捋前面提到的東西。

前面我們反復(fù)提到,Client 的 Options 最終只來自于兩種配置:

Feign.Builder

方法參數(shù)

所以 DEFAULT_OPTIONS 這個(gè) Options 一定是通過上面兩種方法中的其中一種設(shè)置的。

而方法參數(shù)是不可能設(shè)置的成 DEFAULT_OPTIONS。

因?yàn)檫@是我們控制的,只要我們參數(shù)不傳 DEFAULT_OPTIONS,那么永遠(yuǎn)都不可能是 DEFAULT_OPTIONS。

此時(shí)只剩下一種情況,那就是 Spring 在構(gòu)建在 Feign.Builder 的時(shí)候,設(shè)置成 DEFAULT_OPTIONS。

通過查找 DEFAULT_OPTIONS 的使用,我們可以追蹤到這么一段代碼。

8f84c480-82d4-11ee-939d-92fbcf53809c.png

這不就是前面提到的通過聲明 Bean 的方式來設(shè)置超時(shí)時(shí)間。

不同的是它加了 @ConditionalOnMissingBean,這個(gè)注解就是說,一旦我們自己沒有聲明 Options,就用他這個(gè) Options。

到這終于真像大白了。

我們不設(shè)置超時(shí)時(shí)間,Spring 就會給 Feign.Builder 加一個(gè) DEFAULT_OPTIONS 這個(gè) Options。

在執(zhí)行的時(shí)候,發(fā)現(xiàn)是 DEFAULT_OPTIONS,說明我們沒有主動設(shè)置過超是時(shí)間,就會使用 Ribbon 的超時(shí)時(shí)間。

為了方便理清上面的邏輯,這里整一張圖。

8f94bcc8-82d4-11ee-939d-92fbcf53809c.png

雖然 Feign 可以使用 Ribbon 的超時(shí)時(shí)間,但是 Ribbon 的配置的優(yōu)先級是最最低的。

方法參數(shù) > Feign 配置文件 > 聲明 Options > Ribbon 配置

Feign or Ribbon 配置用哪個(gè)好?

其實(shí)我個(gè)人更傾向于使用 Ribbon 的配置方式。

因?yàn)?Ribbon 除了可以設(shè)置超時(shí)時(shí)間之外,還可以配置重試機(jī)制、負(fù)載均衡等其它的配置

為了簡化和統(tǒng)一管理配置,使用 Ribbon 來配置超時(shí)時(shí)間。

可能你會有疑問,F(xiàn)eign 也支持重試機(jī)制,為什么不選擇 Feign?

這是因?yàn)?Feign 重試機(jī)制沒有 Ribbon 的好。

Ribbon 重試的時(shí)候會換一個(gè)服務(wù)實(shí)例來重試,因?yàn)樵瓉沓鲥e(cuò)的可能不可用。

而 Feign 并不會換一個(gè)服務(wù)實(shí)例重試,他并不知道上一次使用的是哪個(gè)服務(wù)實(shí)例,這就導(dǎo)致可能會出現(xiàn)在一個(gè)不可用的服務(wù)實(shí)例上多次重試的情況。

引入 Hystrix 時(shí)超時(shí)時(shí)間設(shè)置

如果你之前的確沒有研究過關(guān)于 Feign 超時(shí)時(shí)間的配置關(guān)系,那么此時(shí)你應(yīng)該有所收獲了。

但是這就結(jié)束了么?

不,事情沒那么簡單。

如果你的項(xiàng)目中使用了 Hystrix,那么就得小心前面說的那些配置了。

由于 Hystrix 跟 Feign 畢竟是一家人,所以當(dāng)引入 Hystrix 時(shí),F(xiàn)eign 就跟之前不一樣了。

Hystrix 會去干一件事,那就是給每個(gè) Feign 的 HTTP 接口保護(hù)起來,畢竟 Hystrix 就是干保鏢這個(gè)事的。

但是這沒保護(hù)還好,一保護(hù)問題就不自覺地出現(xiàn)了。

Hystrix 在保護(hù)的時(shí)候,一旦發(fā)現(xiàn)被保護(hù)的接口執(zhí)行的時(shí)間超過 Hystrix 設(shè)置的最大時(shí)間,就直接進(jìn)行降級操作。

怎么降級的,這里咱不關(guān)心,咱關(guān)心的是這個(gè) Hystrix 超時(shí)的最大值是多少。

因?yàn)橐坏┻@個(gè)時(shí)間小于 Feign 的超時(shí)時(shí)間,那么就會出現(xiàn) Http 接口正在執(zhí)行,也沒有異常,僅僅是因?yàn)閳?zhí)行時(shí)間長,就被降級了。

而 Hystrix 的默認(rèn)的超時(shí)時(shí)間的最大值就只有 1s。

8fb15982-82d4-11ee-939d-92fbcf53809c.png

所以就算你 Feign 超時(shí)時(shí)間設(shè)置的再大,超過 1s 就算超時(shí),然后被降級,太坑了……

所以我們需要修改這個(gè)默認(rèn)的超時(shí)時(shí)間的最大值,具體的配置項(xiàng)如下:

hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds:30000

并且時(shí)間上大致要符合下面這個(gè)原則:

Hystrix 超時(shí)時(shí)間 >= (連接超時(shí)時(shí)間 + 讀超時(shí)時(shí)間) * 重試次數(shù)

重試次數(shù)我們前面也提到了,雖然一般我們不設(shè)置,但是為了嚴(yán)謹(jǐn)還是得加上,因?yàn)橐淮?Http 接口的執(zhí)行時(shí)間肯定跟重試次數(shù)有關(guān),重試次數(shù)越多,時(shí)間就越長。

而連接超時(shí)時(shí)間 + 讀超時(shí)時(shí)間設(shè)置方式,前面提到很多次,不論是通過 Feign 本身設(shè)置還是通過 Ribbon 來設(shè)置,都是可以的。

總結(jié)

今天給大家扒了扒在不同使用條件下 Feign 的超時(shí)時(shí)間設(shè)置,總結(jié)起來大致如下:

單獨(dú)使用 Feign 時(shí):通過 Feign.Builder 和方法參數(shù);

SpringCloud 環(huán)境下單獨(dú)使用 Feign:方法參數(shù)、配置文件、聲明 Options Bean;

跟 Ribbon 配合使用:通過 Ribbon 的超時(shí)參數(shù)設(shè)置;

跟 Hystrix 配合使用:修改默認(rèn)的超時(shí)時(shí)間,盡量符合 Hystrix 超時(shí)時(shí)間 >= (連接超時(shí)時(shí)間 + 讀超時(shí)時(shí)間) * 重試次數(shù)。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • URL
    URL
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    16277
  • 負(fù)載均衡
    +關(guān)注

    關(guān)注

    0

    文章

    135

    瀏覽量

    12905
  • HTTP接口
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    2093

原文標(biāo)題:Feign 如何設(shè)置超時(shí)時(shí)間,不同情況下還真不一樣

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    ESP32-S2如何設(shè)置socket recv的超時(shí)時(shí)間?

    請教一下: 如何設(shè)置socket recv的超時(shí)時(shí)間? 參考的是TCP server例程,有其它的提供超時(shí)的例程嗎? 謝謝!
    發(fā)表于 06-21 07:27

    請問lwIP連接超時(shí)時(shí)間如何設(shè)置?

    目前的狀態(tài):使用connect連接到服務(wù)端,如果服務(wù)端掉線需要等待大概20s才會返回連接錯(cuò)誤,時(shí)間有點(diǎn)長,沒看到connect有設(shè)置超時(shí)的功能,有沒有什么方法設(shè)置連接
    發(fā)表于 09-27 09:44

    從機(jī)indication接收超時(shí)時(shí)間怎么更改?

    從機(jī)向主機(jī)indication消息后,主機(jī)會回復(fù)一個(gè)cfm事件,當(dāng)主機(jī)沒有回復(fù)時(shí),從機(jī)會超時(shí)一個(gè)超時(shí)事件,這個(gè)超時(shí)事件測試為30s,覺得有點(diǎn)長,當(dāng)一直找不到哪里可以更改這個(gè)超時(shí)時(shí)間的,
    發(fā)表于 03-09 10:00

    如何去配置IWDG的超時(shí)時(shí)間

    IWDG是什么?IWDG有哪些功能?怎么去使用IWDG?如何去配置IWDG的超時(shí)時(shí)間?
    發(fā)表于 08-02 10:04

    如何設(shè)置WWDG窗口看門狗的超時(shí)時(shí)間

    窗口看門狗WWDG的主要功能有哪些?如何設(shè)置WWDG窗口看門狗的超時(shí)時(shí)間
    發(fā)表于 09-24 07:33

    空閑中斷IDLE的超時(shí)時(shí)間如何設(shè)置?

    空閑中斷IDLE的超時(shí)時(shí)間如何設(shè)置
    發(fā)表于 12-10 06:23

    如何設(shè)置獨(dú)立看門狗的超時(shí)時(shí)間?有哪些注意事項(xiàng)?

    如何設(shè)置獨(dú)立看門狗的超時(shí)時(shí)間?有哪些注意事項(xiàng)?
    發(fā)表于 01-18 06:25

    請問一下TCP建立連接超時(shí)時(shí)間怎么修改?

    請問一下TCP建立連接超時(shí)時(shí)間怎么修改
    發(fā)表于 08-25 14:44

    有什么辦法解決WWDG最大超時(shí)時(shí)間太短的問題?

    我想在 STM32F407 上使用其中一個(gè)看門狗,但令我驚訝的是 WWDG 的最大超時(shí)時(shí)間如此之短(大約 50 毫秒,具體取決于時(shí)鐘速度)。這是非常有限制的,例如扇區(qū)擦除花費(fèi)的時(shí)間比這長得多(并且是
    發(fā)表于 12-23 06:19

    ESP32-S2如何設(shè)置socket recv的超時(shí)時(shí)間?

    請教一下:如何設(shè)置socket recv的超時(shí)時(shí)間?參考的是TCP server例程,有其它的提供超時(shí)的例程嗎?謝謝!
    發(fā)表于 02-20 07:30

    有沒有辦法設(shè)置在STA模式下獲取DHCP地址的超時(shí)時(shí)間?

    大家好。有沒有辦法設(shè)置在 STA 模式下獲取 DHCP 地址的超時(shí)時(shí)間?我想稍微增加它看起來 - 在慢速或低信號網(wǎng)絡(luò)環(huán)境中使用 4 秒。
    發(fā)表于 02-24 06:26

    怎么計(jì)算一個(gè)modbus的超時(shí)時(shí)間

    要怎么才能計(jì)算一個(gè)modbus的超時(shí)時(shí)間
    發(fā)表于 10-11 06:33

    時(shí)控開關(guān)怎么設(shè)置時(shí)時(shí)間

    藍(lán)牙時(shí)控開關(guān):通過藍(lán)牙與手機(jī)連接,15米范圍內(nèi)使用手機(jī)對開關(guān)進(jìn)行無線控制。不用接觸開關(guān),就可以控制手動開、關(guān),也可以設(shè)置時(shí)時(shí)間自動開、關(guān)。
    的頭像 發(fā)表于 11-10 10:34 ?1.2w次閱讀

    socket連接超時(shí)如何處理

    實(shí)現(xiàn)以及網(wǎng)絡(luò)環(huán)境。 1. 理解Socket連接超時(shí) 在TCP/IP協(xié)議中,socket連接超時(shí)通常指的是在建立連接、發(fā)送數(shù)據(jù)或接收數(shù)據(jù)的過程中,由于沒有在預(yù)期時(shí)間內(nèi)完成操作,系統(tǒng)自動終止連接。這個(gè)預(yù)期
    的頭像 發(fā)表于 11-01 16:48 ?4453次閱讀

    socket 連接超時(shí)處理技巧

    在網(wǎng)絡(luò)編程中,Socket連接超時(shí)是一個(gè)常見的問題。處理超時(shí)的關(guān)鍵在于確保程序能夠優(yōu)雅地處理這些情況,避免程序崩潰或者無響應(yīng)。以下是一些處理Socket連接超時(shí)的技巧。 1. 設(shè)置合理
    的頭像 發(fā)表于 11-12 14:13 ?2950次閱讀
    梁河县| 体育| 潮安县| 南华县| 宜宾县| 利川市| 资溪县| 梅河口市| 鄂托克前旗| 永和县| 民勤县| 新丰县| 平潭县| 离岛区| 望城县| 密山市| 剑河县| 罗源县| 城固县| 黎川县| 长武县| 武平县| 玉屏| 西峡县| 涿州市| 封丘县| 乌苏市| 龙游县| 聂拉木县| 宁化县| 昭觉县| 高平市| 台前县| 迭部县| 沈阳市| 乐昌市| 绥德县| 唐海县| 松原市| 孟津县| 昭通市|