2016-09-07 4 views
0

URL에서 HTTP 응답 스트림을 읽습니다. 응답 인 runForeach는 작은 청크의 스트림을 리턴합니다. 청크 크기를 늘리고 싶습니다.증가시키는 방법 (AKKA-HTTP 클라이언트) singleRequest 응답 척 크기

다음과 같이 (기본값 증가) 실험 한 application.conf 파일이 있지만 아무 것도 변경되지 않았습니다. 어떤 config 매개 변수가 필요한지 확실하지 않았습니다. 나는 틀린 일을해야만합니다.

application.conf :

akka.http.host-connection-pool.client.parsing.max-chunk-size=50m 
akka.http.host-connection-pool.client.parsing.max-chunk-ext-length=50m 
akka.http.host-connection-pool.client.parsing.max-content-length=50m 

내 코드 :

var config: Config = ConfigFactory.load() 

implicit val system = ActorSystem("test", config) 
import system.dispatcher 
implicit val materializer = ActorMaterializer() 

val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(uri = source)) 

responseFuture.flatMap { response => 
    val responseData = response.entity.dataBytes 
    responseData.runForeach(chunk => { 
    println(s"CHUNK:${chunk}") 
    }) 
} 

감사합니다. 문서로

답변

1

max-chunk-size은 메모리 채우기에 대한 보호 기능이며 서버가 큰 청크로 응답하는 경우 요청을 실패하고 다른 방식으로 청크의 크기를 지정하지 않습니다.

청크 크기는 OS 네트워크 버퍼, 네트워크 패킷 크기, HTTP 청크로 응답하는 서버 등으로 지정됩니다. 실제로 "50m 청크가 필요합니다"라고 말할 수는 없습니다.

당신이 할 수있는 것은 들어오는 ByteString을 50MB의 청크로 연결하는 것입니다. concat은 제로 복사 작업이므로 오버 헤드가 상당히 낮아야합니다. 나는 이미 "호스트 연결 pool.client"을 사용했다 http://doc.akka.io/docs/akka/2.4/scala/stream/stream-cookbook.html#chunking-up-a-stream-of-bytestrings-into-limited-size-bytestrings

+0

감사합니다. 문서에 추가하는 것이 유용 할 수 있습니다. 또한 갈등을 봐야 해. – TalBeno

0

이러한 속성의 설정을 설명 - link to documentation :

중요 :이 섹션의 설정에 하여 해당 설정을 오버라이드 (override) 할 수 있습니다 : akka.http.server.parsing, akka.http.client.parsing 또는 akka.http.host-connection-pool.client.parsing.

아마도 akka.http.host-connection-pool.client.parsingakka.http.server.parsing으로 설정해야합니다.

+0

: 여기에 유용 할 수 있습니다 "rechunking"수행하는 사용자 정의 그래프 무대를 만드는 방법의 Akka 스트림 문서의 예제가있다

. 귀하의 제안에 따라 서버를 추가했습니다. 아아, 여전히 영향을 미치지 않는 것 같습니다. 제안 해 주셔서 감사합니다. – TalBeno