2017-03-27 4 views
0

저는 평균 크기가 ~ 156KB 인 akka-http를 테스트하고 있습니다. 순차적으로 테스트를 실행하면 akka-http로 구현 된 클라이언트에서도 응답을 얻을 수 있습니다.akka http의 대용량 응답

그러나 끝점에서 동시 요청 (8 요청)을 실행하면 처음 세 개만 응답을받습니다.

로컬에서 테스트가 실행됩니다.

다음은 서버 코드입니다.

val text = Source.fromInputStream(getClass.getResourceAsStream("/data/data.txt")).mkString 

    val route = 
    path("build") { 
     get { 
     complete { 
      Future { 
      println("Finished") 
      //HttpEntity.Strict(ContentTypes.`text/html(UTF-8)`, ByteString(text)) 
      HttpEntity(ContentTypes.`text/html(UTF-8)`, text) 
      } 

     } 
     } 
    } 

다음은 클라이언트 코드입니다.

(1 to 8).map { i => 
    val res = buildRequest.map { br => 
      println(br) 
      TestResult(true, startTime, System.currentTimeMillis, d, None) 
     }.recoverWith { case t => 
      println(t) 
      Future.successful(TestResult(false, startTime, System.currentTimeMillis, d, Some(t.getMessage))) 
     } 
} 

.. 
.. 

def buildRequest = Source.single(HttpRequest(uri = "/build") -> 1) 
    .via(poolClientFlow) 
    .runWith(Sink.head) 

답변

1

포함 된 클라이언트 코드는 응답의 엔티티를 소비하지 않으므로 발생하는 문제가 발생할 수 있습니다. 전체 응답 엔티티를 사용하거나 폐기해야합니다. 이 문제에 대한 자세한 설명과 해결 방법은 here입니다.