spray.io客户端配置

spray.io client configuration

我有一个用于测试服务器的基本客户端。对于我使用的配置 application.json

"spray": {
  "can": {
    "client": {
      "idle-timeout": "120 s",
      "request-timeout": "180 s"
    },
    "host-connector": {
      "max-retries": "1",
      "max-connections": "64"
    }
  }
}

但是在 sendrecieve 方法中,我看到超时总是 60 秒,根据文档,如果我使用请求超时,它应该是隐式值

def sendReceive(implicit refFactory: ActorRefFactory, executionContext: ExecutionContext,
              futureTimeout: Timeout = 60.seconds): SendReceive =
sendReceive(IO(Http)(actorSystem))

我是否需要显式加载配置?

这是spary各种超时值比较容易混淆的地方,详细解释见:Understanding Spray Client Timeout Settings

关于上面方法定义的几点说明,timeout只是用来满足对transport actor的请求超时,与本次连接的request timeout无关。 futureTimeout: Timeout = 60.seconds表示如果提供了none就使用这个默认值,并不是无条件使用

您可以通过将 HostConnectorSetup 传递给主机或请求级别 API 以编程方式配置 requestTimeout,因为您的 spray.can.client 配置中已经有了它,尽管您应该不需要做进一步的改变。