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
配置中已经有了它,尽管您应该不需要做进一步的改变。
我有一个用于测试服务器的基本客户端。对于我使用的配置 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
配置中已经有了它,尽管您应该不需要做进一步的改变。