2016-06-13 3 views
1

저는 Akka 2.4.7을 사용하여 본질적으로 개행으로 구분 된 JSON 객체의 스트림 인 웹 리소스를 읽습니다. 스트림은 실제 크기에 제한이 없습니다. 8메가바이트이 ​​소비되어 주위에, 나는 예외 얻을 때Akka-http (클라이언트)에서 .withoutSizeLimit을 사용하는 방법 HttpRequest?

:

[error] (run-main-0) EntityStreamSizeException: actual entity size (None) exceeded content length limit (8388608 bytes)! You can configure this by setting `akka.http.[server|client].parsing.max-content-length` or calling `HttpEntity.withSizeLimit` before materializing the dataBytes stream. 

은 "실제 개체의 크기 (없음)"을 조금 재미있는 것 같다,하지만 내 진짜 문제는 사용하는 방법입니다 HttpEntity.withSizeLimit (또는 내 경우에는 오히려 .withoutSizeLimit이 있어야합니다.)

val chunks_src: Source[ByteString,_] = Source.single(req) 
    .via(connection) 
    .flatMapConcat(_.entity.dataBytes) 

가 나는 .map((x: HttpResponse) => x.withoutSizeLimit)를 추가했지만, 그것은 컴파일되지 않습니다 :

내 요청 코드는 다음과 같다. 클라이언트 측 프로그래밍을 수행 할 때 HttpEntity의 역할은 무엇입니까?

글로벌 구성을 변경할 수는 있지만, 그 점이 누락되었습니다. 특정 요청에 대해서만 "제한 없음"플래그를 지정하고 싶습니다.

추가 질문으로, 나는 서버 측에 max-content-length에 대한 필요성을 이해하지만, 왜 클라이언트에 영향을 줍니까?

참고 :

답변

1

나는이 주제에 대한 전문가 멀리 해요,하지만 당신이 필요로하는 것 같다 다음과 같은 엔티티에 .withoutSizeLimit()을 추가하십시오.

Source.single(req) 
    .via(connection) 
    .flatMapConcat(_.entity.withoutSizeLimit().dataBytes) 
+0

감사합니다. 불행히도 나는 더 이상 그 코드에 적극적으로 참여하지 않습니다. 바라건대 다른 사람들이 이것을 유용하게 사용하기를 바랍니다. – akauppi

관련 문제