# 오류
Spring Boot에서 WebClient 사용하여 API 호출하는 로직에서 다음 에러가 발생했다.
org.springframework.web.reactive.function.client.WebClientResponseException: 200 OK from GET http://API_URL;
nested exception is org.springframework.core.io.buffer.DataBufferLimitException:
Exceeded limit on max bytes to buffer : 262144
응답이 200 OK 인걸 보면 요청까지는 성공했는데 아무래도 응답사이즈가 커서 오류가 발생한 것 같다.
# 원인
2.x 스프링 버전 올라오면서 버퍼 사이즈가 262114 Bytes로 고정되었다고 한다.
소스코드에서 이 사이즈를 변경하거나 제한을 없애주어야 한다.
# 해결
ExchangeStrategies 객체 생성하는 로직에서 maxInMemorySize 함수를 호출한다.
함수의 인자로 메모리 사이즈를 bytes 단위로 기입하거나, 무제한일 경우 -1을 입력한다.
예를 들어, 버퍼사이즈를 최대 50MB 사용하겠다면 .maxInMemorySize(50 * 1024 * 1024)을 입력한다.
사이즈를 제한하지 않겠다면 .maxInMemorySize(-1)을 입력한다.
ExchangeStrategies strategies = ExchangeStrategies
.builder()
.codecs(configurer -> {
configurer
.defaultCodecs()
.maxInMemorySize(-1); // unlimited buffer size (default: 256k)
});
WebClient webClient = WebClient.builder()
.exchangeStrategies(strategies)
.build();
※ 참고
'생계유지형 개발자 > Stack Over Flow 한국판' 카테고리의 다른 글
[Node] npm 패키지 설치 시 import gyp 에러 (0) | 2024.04.30 |
---|---|
[Node] 맥북 M1 에서 chromedriver 설치안될 때 (0) | 2022.05.27 |
java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags (0) | 2021.04.22 |
[Tomcat] Unrecognized VM option 'PrintGCDateStamps' (0) | 2021.04.21 |
[SpringBoot] 스프링부트 실행 시 톰캣 에러 (내/외부 톰캣 사용 문제) (0) | 2021.02.19 |