如何在Akka Http中设置withoutSizeLimit

时间:2019-05-16 21:38:08

标签: akka-http httpentity

我正在尝试使用以下代码片段将大型JSON文件写入弹性搜索

      val system = mat.system
      import system.dispatcher
      val response = Http(system).singleRequest(httpRequest).map {res =>
      if (res.status == StatusCodes.OK) {
        res.discardEntityBytes()
        Success(true)
      } else {
        println(s"Unsuccessful response: $res with http code: ${res.status}")
        Success(false)
      }
    }
    try {
      Await.result(response, timeout.duration)
    } catch {
      case t: Throwable => {
        println(t, s"Error occurred")
        Failure(t)
      }
    }

这个大的JSON文件不是太大。大小仅为150 MB。但是,当我执行上述代码片段时,出现错误“请求大于服务器愿意或能够处理的请求。”,响应的状态码为413。

我在创建HttpEntity时尝试使用noSizeLimit,如下所示

val lines = //Get all lines from the 150MB file
val httpEntity = HttpEntity.Strict(ContentTypes.`application/json`, data = ByteString(lines)).withoutSizeLimit()
val httpRequest = HttpRequest(uri = s"http://$server:$port/$index/_bulk", entity = httpEntity, method = HttpMethods.POST)

我也尝试使用图形执行此请求,但是我有限的Akka Streams / Graphs知识成为一个障碍。

当我使用withoutSizeLimit时,我期望Akka的akka​​.http.parsing.max-content-length将被覆盖,并且这个单个请求将被视为一个大请求。

0 个答案:

没有答案