是否可以在主机级别的akka​​-http客户端连接上生存

时间:2017-03-28 09:58:41

标签: scala dns akka akka-stream akka-http

我有一个在生产上运行的服务,它使用以下方法调用依赖服务:

  

HTTP()。newHostConnectionPoolHttps [无极[的HttpResponse]]

每次部署新的依赖服务堆栈时,都会通过设置更新我的服务DNS缓存:

  

java.security.Security.setProperty(“networkaddress.cache.ttl”,“60”)

问题是池内的连接永远存在,并且只在启动时解析DNS一次。因此继续调用旧的依赖堆栈

我正在寻找设置最大连接时间。

1 个答案:

答案 0 :(得分:2)

Akka-http内置了此功能, 您可以在此reference config

中查看这些设置

简而言之,您基本上必须将以下密钥放入您的配置中(最有可能是application.conf):

akka {
  io {
    dns {
      inet-address {

        # To set the time to cache name resolutions
        # Possible values:
        # default: sun.net.InetAddressCachePolicy.get() and getNegative()
        # forever: cache forever
        # never: no caching
        # n [time unit]: positive timeout with unit, for example "30 s"

        positive-ttl = 20s
        negative-ttl = 10s
      }
    }
  }
}

这基本上就是你所要做的。连接池TTL已设置为合理值,默认情况下您可以找到它们here