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

Java網(wǎng)絡編程教程之設置請求超時的方法

 更新時間:2017年12月18日 10:33:28   作者:iamgeektao  
這篇文章主要給大家介紹了關于Java網(wǎng)絡編程教程之設置請求超時的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

一、引言

隨著企業(yè)系統(tǒng)的發(fā)展,應用多采用分布式結構,嚴重依賴于網(wǎng)絡的穩(wěn)定性。但由于網(wǎng)絡天生的不穩(wěn)定性,系統(tǒng)開發(fā)過程中需要考慮網(wǎng)絡不穩(wěn)定情況下如何保證應用的魯棒性。 設置網(wǎng)絡超時是其中一種保證應用健壯性的手段。 設置網(wǎng)絡超時設置后,請求在設定時間能未完成將被強制終止,保證程序不出現(xiàn)無限制的線程阻塞情況,有效的提高了應用的可用性。

下面話不多說了,來一起看看詳細的介紹吧。

二、未設置超時與設置超時情況對比

1. 網(wǎng)絡請求圖例:

網(wǎng)絡請求超時案例

2. 設置超時時間后,請求圖例:

網(wǎng)絡請求超時案例-設置超時

三、常見的網(wǎng)絡超時設置

1. httpclient超時設置(Spring bean)

配置

 <bean id="multiThreadedHttpConnectionManager" class="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager">
 <property name="params">
  <bean  class="org.apache.commons.httpclient.params.HttpConnectionManagerParams">
  <property name="maxTotalConnections" value="${maxTotalConnections:300}" />
  <property name="defaultMaxConnectionsPerHost" value="${defaultMaxConnectionsPerHost:300}" />
  <!-- 連接超時,毫秒。 -->
  <property name="connectionTimeout" value="${connectTimeout:10000}" />
  <!-- socket超時,毫秒。 -->
  <property name="soTimeout" value="${readTimeout:600000}" />
  <property name="staleCheckingEnabled" value="${staleCheckingEnabled:true}" />
  </bean>
 </property>
 </bean> 
 <bean id="httpClient" class="org.apache.commons.httpclient.HttpClient">
 <constructor-arg>
  <ref bean="multiThreadedHttpConnectionManager" />
 </constructor-arg>
 </bean>

httpinvoker使用場景

配置HttpInvokerRequestExecutor,覆蓋HttpInvokerProxyFactoryBean中默認使用的的SimpleHttpInvokerRequestExecutor,并配置網(wǎng)絡超時。見《配置》。

 <bean id="httpInvokerRequestExecutor"  class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor">
  <constructor-arg>
  <ref bean="httpClient" />
  </constructor-arg>
 </bean> 
 <bean id="xxxxService"  class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
  <property name="serviceUrl" value="${xxxxServiceUrl}" />
  <property name="serviceInterface" value="com.xxxxService" />
  <property name="httpInvokerRequestExecutor" ref="httpInvokerRequestExecutor" />
 </bean>

2. HttpClient超時設置(硬編碼)

樣例

 RequestConfig config = RequestConfig.custom()
  .setSocketTimeout(1*1000) // socket套接字超時,毫秒。
  .setConnectionRequestTimeout(1*1000) //使用連接池來管理連接時,從連接池獲取連接的超時時間,毫秒。
  .setConnectTimeout(5*1000) // 連接建立超時,毫秒。
  .build();
 CloseableHttpClient httpClient = HttpClients.custom()
  .setDefaultRequestConfig(config) //
  .build();
 CloseableHttpResponse httpResponse = httpClient.execute(httpGet); // 執(zhí)行請求

3. 郵件超時設置

基于Spring框架開發(fā)的項目可以很方便的使用
org.springframework.mail.javamail.JavaMailSenderImpl實現(xiàn)郵件提醒等功能。

配置

 <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"
 p:host="${mailSender.host}" p:username="${mailSender.username}"
 p:password="${mailSender.password}">
 <property name="javaMailProperties">
  <props>
  <prop key="mail.smtp.auth">${mailSender.smtp.auth:true}
  </prop>
  <prop key="mail.smtp.timeout">${mailSender.smtp.timeout:10000}
  </prop>
  <prop key="mail.smtp.connectiontimeout">${mailSender.smtp.connectiontimeout:10000}
  </prop>
  </props>
 </property>
 </bean>

javaMailProperties說明

  • mail.smtp.timeout : smtp郵件服務器讀取超時。
  • mail.smtp.connectiontimeout : smtp郵件服務器連接超時。
  • mail.smtp.auth : 是否認證用戶。

注: property參數(shù)名列表可查詢JavaMail API documentation。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

參考

相關文章

  • SpringBoot利用@Retryable注解實現(xiàn)接口重試

    SpringBoot利用@Retryable注解實現(xiàn)接口重試

    本文主要介紹了springboot如何利用@Retryable注解實現(xiàn)接口重試功能,文中示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • jvm細節(jié)探索之synchronized及實現(xiàn)問題分析

    jvm細節(jié)探索之synchronized及實現(xiàn)問題分析

    這篇文章主要介紹了jvm細節(jié)探索之synchronized及實現(xiàn)問題分析,涉及synchronized的字節(jié)碼表示,JVM中鎖的優(yōu)化,對象頭的介紹等相關內容,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • 關于后端如何解決跨域的問題說明

    關于后端如何解決跨域的問題說明

    這篇文章主要介紹了關于后端如何解決跨域的問題說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 多模字符串匹配算法原理及Java實現(xiàn)代碼

    多模字符串匹配算法原理及Java實現(xiàn)代碼

    這篇文章主要介紹了多模字符串匹配算法原理及Java實現(xiàn)代碼,涉及算法背景,原理,構建過程簡單介紹幾Java代碼實現(xiàn)等相關內容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java實現(xiàn)簡易圖書借閱系統(tǒng)

    Java實現(xiàn)簡易圖書借閱系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡易圖書借閱系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SpringBoot實現(xiàn)在webapp下直接訪問html,jsp

    SpringBoot實現(xiàn)在webapp下直接訪問html,jsp

    這篇文章主要介紹了SpringBoot實現(xiàn)在webapp下直接訪問html,jsp問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Spring DATA JPA 中findAll 進行OrderBy方式

    Spring DATA JPA 中findAll 進行OrderBy方式

    這篇文章主要介紹了Spring DATA JPA 中findAll 進行OrderBy方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 關于weblogic部署Java項目的包沖突問題的解決

    關于weblogic部署Java項目的包沖突問題的解決

    這篇文章主要介紹了關于weblogic部署Java項目的包沖突問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • Springboot處理CORS跨域請求的三種方法

    Springboot處理CORS跨域請求的三種方法

    這篇文章主要介紹了Springboot處理CORS跨域請求的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • RabbitMQ之消息的可靠性方案詳解

    RabbitMQ之消息的可靠性方案詳解

    這篇文章主要介紹了RabbitMQ之消息的可靠性方案詳解,MQ 消息數(shù)據(jù)完整的鏈路為:從 Producer 發(fā)送消息到 RabbitMQ 服務器中,再由 Broker 服務的 Exchange 根據(jù) Routing_Key 路由到指定的 Queue 隊列中,最后投送到消費者中完成消費,需要的朋友可以參考下
    2023-08-08

最新評論

天门市| 娱乐| 霍城县| 怀化市| 池州市| 永德县| 浦江县| 修水县| 吴旗县| 横峰县| 福鼎市| 大悟县| 和平县| 越西县| 望谟县| 太白县| 庆安县| 扎鲁特旗| 南通市| 荣成市| 保靖县| 武鸣县| 湘西| 石河子市| 龙里县| 南昌市| 怀宁县| 西乌珠穆沁旗| 襄城县| 灵石县| 平南县| 古交市| 阳新县| 榆社县| 镇平县| 洮南市| 黄龙县| 二连浩特市| 柳江县| 平安县| 伊春市|