我正在发出一个产生未来的 Web 服务请求。像这样(简化复制):
import play.api.libs.ws.WSClient
import scala.concurrent.{ExecutionContext, Future}
import scala.concurrent.duration._
class Service(wsClient: WSClient)(implicit ec: ExecutionContext) {
def callWebService() = {
val req: WSRequest = wsClient.url(...).withRequestTimeout(180 seconds)...
val respFuture:Future[Response] = req.execute()
}
}
在 WSClient 放弃之前,被调用的 Web 服务有 180 秒的时间做出响应。
此服务类的客户端现在将其称为service.callWebService()
. 当第三方 Web 服务花费 > 120 秒时,而不是等待 180 秒,未来会在 120 秒超时(线程java.util.concurrent.TimeoutException: Read timeout to localhost/127.0.0.1:8081 after 120000 ms
中抛出application-akka.actor.default-dispatcher-3
)。
感谢有关如何将默认调度程序使用的 120 秒增加到 180 秒的任何指示。
笔记:
- 该应用程序在其他地方使用 Akka 演员。但是这个控制流中没有参与者。
- 这篇文章很接近但没有帮助。