2017-12-13 9 views
0

에의 OutputStream에서 페이로드 데이터를 스트리밍하고, 우리는 JSON 변환을 처리 할 수 ​​JacksonLibrary을 사용하고 있습니다. (직렬화 및 직렬화 해제). 우리의 퍼텐셜 테스트 동안, 우리는 객체를 문자열 (페이로드)로 직렬화하고 해당 페이로드를 가져 와서 요청을하는 httpClient가 좋은 시간을 들이고 있음을 관찰했습니다. Jackson은 문자열을 출력 스트림/작성기에 직접 쓸 수있는 기능을 제공합니다. (스트리밍의 종류).방법은, 우리의 응용 프로그램에서 HttpRequestBody

페이로드 입력으로 해당 출력 스트림의 응답을 사용하도록 HttpRequestBase/HttpPost 등을 구성 할 수있는 방법이 있습니까? -> inputstream에 대한 출력 스트림을 파이핑한다고 생각했지만 HttpRequest의 입력 스트림을 설정하는 노출 된 기능은 없습니다.

답변

0

나는 현명한 스트리밍 방법이 있을지는 모르겠지만이를 향상시키는 한 가지 방법은 writeValueAsBytes을 사용하고 httpclient가 바이트를 게시하는 것입니다.이 바이트는 unessesary 변환 바이트 -> chars-> 바이트를 수행하지 않습니다.

은 또한 당신은 " 세션 객체가 페이로드를 복용 문자열 (페이로드)에 객체를 Serialising 하고 요청 시간 의 좋은 금액을 복용하고"말 - 어떤 결론을 너무 많은 일을. 정확한 병목 현상을 찾으려면 더 자세히 조사해야합니다. 예 : 아마 잭슨을 제대로 사용하지 않았을 것입니다. 여기에 : https://theartofdev.com/2014/07/20/jackson-objectmapper-performance-pitfall/

+0

감사합니다. 나는 이미이 링크를 살펴 보았고 ObjectMapper 인스턴스 하나만 사용하고 있습니다. 우리는 다른 모든 경우에 생성 된만큼 json을 스트리밍 할 수 있습니다. (응답을 사용자에게 보내는 등). 그러나 우리는이 경우에만 붙어 있습니다. 우리는 writeValueasBytes를 시도하고 perf 개선을 점검 할 것입니다. – abhirulz