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等能搜索到的资料有限,还是到官网上去查找拓展,更靠谱。

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