Как установить безSizeLimit в Akka Http - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь записать большой файл 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 МБ. Но когда я выполняю приведенный выше фрагмент, я получаю сообщение об ошибке «Запрос больше, чем сервер хочет или может обработать», с кодом состояния ответа 413.

Я пытался использовать безSizeLimit при создании HttpEntity, как показано ниже

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 служили помехой.

Когда я использовал безSizeLimit, я ожидал, что akka.http.parsing.max-content-length Акки будет переопределен, и этот единственный запрос будет считаться большим запросом.

...