我有一个基本客户端,用于测试我的服务器。对于我正在使用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))
我是否需要明确加载配置?
答案 0 :(得分:1)
这是spary的各种超时值的一个令人困惑的方面,详细解释请参阅:Understanding Spray Client Timeout Settings
关于上述方法定义的几点,超时仅用于满足对传输actor的请求所需的超时,它与此连接的请求超时无关。 futureTimeout: Timeout = 60.seconds
表示如果未提供此默认值,则使用此默认值,而不是无条件使用。
您可以通过将HostConnectorSetup
传递给主机或请求级别API来以编程方式配置requestTimeout,因为您已经在spray.can.client
配置中使用了这个,但您不需要制作进一步的变化。