Akka默認20s超時修改配置

問題現象:項目中調用第三方rest接口,耗時超過20s,連續請求5次,然後報超時失敗

定位分析: 我scala代碼中默認是5分鐘超時失敗,也沒有設置循環調用的地方,搜索了所有相關代碼和環境配置都沒有20s配置的地方,百思不得其解。通過查找資料發現,我們是通過spray框架對外提供rest接口和訪問外部信息。而akka有一套比較完善的超時機制設置,具體見文檔說明https://doc.akka.io/docs/akka-http/current/common/timeouts.html
於是,在akka.conf增加如下配置,特別注意,調用第三方rest,等於我們是客戶端,需要配置客戶端超時機制,定位問題時一直在服務端配置上修改嘗試,糾結爲什麼不生效,很囧~~
spray.can {
  server {
    remote-address-header = on
    parsing.max-content-length = 20m
    idle-timeout = 4min
    request-timeout = 3min
  }
  client.idle-timeout = 4min
  client.request-timeout = 3min
}

經驗總結:

1、接觸scala時間不長,框架都是前人搭建,雖然scala語言跟java很相似,對於簡單的代碼故障修修補補還是比較好應付,但是牽涉到一些架構方面的,還是得從源頭上理清,對系統進行全面認識理解,才能少走彎路。在最開始定位的時候一直以爲是spray框架的相關配置,根本沒往akka上想,所以查找資料也繞了個圈。

2、對於小衆化的語言框架,百度、bing等能搜索到的資料有限,還是到官網上去查找拓展,更靠譜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章