api 응답을 받아올때 버퍼링 메모리 초과

김효준·2024년 2월 13일
0

api서버로부터 응답을 받아오는데 버퍼링 메모리 초과가 발생했다..
분할해서 데이터를 받는 방법은 적합하지 않다.

그런 경우에는 한 번의 요청으로 최대한 많은 데이터를 받아야 하므로, WebClient의 기본 버퍼 크기를 늘리는 방법을 고려해볼 수 있다.

HttpClient httpClient = HttpClient.create()
                .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000);

        WebClient webClient = WebClient.builder()
                .codecs(configurer -> configurer.defaultCodecs().maxInMemorySize(5 * 1024 * 1024))  //5MB
                .baseUrl(uri.toString())
                .clientConnector(new ReactorClientHttpConnector(httpClient))
                .build();

        String response = webClient.get()
                .uri(uri)
                .header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
                .retrieve()
                .bodyToMono(String.class)
                .block();

maxInMemorySize를 늘려서 해결함

0개의 댓글

관련 채용 정보