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를 늘려서 해결함