首页 > 解决方案 > 1 秒后未订阅 Akka HTTP 错误响应实体

问题描述

我正在使用 Akka HTTP cachedHostConnectionPoolHttps 池作为 Akka Streams Flow 的一部分发送请求:

  private val requestFlow: Flow[(HttpRequest, HelperClass), Either[Error, String], _] =
Http().cachedHostConnectionPoolHttps(BaseUrl).mapAsync(1) {
  case (Success(HttpResponse(_, _, entity, _)), _) =>
    Unmarshal(entity).to[String].map(response => {
      Right(response)
    })
  case (Failure(ex), _) =>
    Future(Left(Error(ex)))
}

由于某种原因,并非所有请求响应都在处理中。一些导致错误的结果:

a.h.i.e.c.PoolGateway - [0 (WaitingForResponseEntitySubscription)] Response entity was not subscribed after 1 second. Make sure to read the response entity body or call `discardBytes()` on it.

如何在保持上述流程的同时订阅我的回复?

标签: httprequestakkasubscribe

解决方案


虽然这不是最好的解决方案,但您可以像这样增加响应订阅超时:

akka.http.host-connection-pool.response-entity-subscription-timeout = 10.seconds

这是一个更彻底的讨论:https ://github.com/akka/akka-http/issues/1836


推荐阅读