Spring WebClient๋ก API ํธ์ถ์ ํ๋ค ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ง๋ ์ ์์ด์.
DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
์ด๊ฒ ๋ญ๋๋ฉด,
WebClient๊ฐ ์๋ต ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฒํผ๋งํ๋๋ฐ ๊ธฐ๋ณธ ์ ํ์ด 256KB(262,144 bytes)๋ก ์ค์ ๋์ด ์์ด์, API์์ ๋๋ฌด ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ฃผ๋ฉด "๋ ๋๋ฌด ์ปค์ ๋ชป ๋ฐ๊ฒ ์ด!" ํ๊ณ ์๋ฌ๋ฅผ ๋ด๋ฑ๋ ๊ฑฐ์์.
์ด๋ด ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค. ๋ฒํผ ํฌ๊ธฐ๋ฅผ ๋๋ ค์ฃผ๋ฉด ๋!
๋ค์๊ณผ ๊ฐ์ด WebClient ์ค์ ์ maxInMemorySize ์ต์ ์ ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.baseUrl(baseUrl)
// ๐ง ๋ฒํผ ํฌ๊ธฐ ์ฆ๊ฐ: 256KB → 10MB (๋์ฉ๋ ์๋ต ๋ฐ์ดํฐ ์ฒ๋ฆฌ)
.codecs(configurer -> configurer
.defaultCodecs()
.maxInMemorySize(10 * 1024 * 1024)) // 10MB
.build();
์ด๋ ๊ฒ ์ค์ ํด์ฃผ๋ฉด ์ต๋ 10MB๊น์ง ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๋ฐ์ ์ ์์ด์ ๋์ฉ๋ JSON, ์ด๋ฏธ์ง URL ๋ฆฌ์คํธ, ์์ ํ์ผ ๋ฐ์ดํฐ ๋ฑ API ์๋ต์ด ํฐ ๊ฒฝ์ฐ์๋ ์๋ฌ ์์ด ์ฒ๋ฆฌํ ์ ์์ด์.
ํ์ง๋ง ์ฃผ์์ฌํญ! ๐ซ
- ๋ฌด์์ ๋๋ฌด ํฐ ์ฉ๋์ผ๋ก ์ค์ ํ๋ฉด ์๋ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ก์๋จน์ด OutOfMemory๊ฐ ๋ ์ ์์ผ๋, API ์๋ต ์์ ํฌ๊ธฐ์ ๋ง๊ฒ ์ ๋นํ ์ค์ ํ์ธ์.
- ์ง์ง ๋๋ฌด ํฐ ๋ฐ์ดํฐ๋ ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ๋ ํ์ผ ๋ค์ด๋ก๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ ์์ ํฉ๋๋ค.
์ด๋ ๊ฒ DataBufferLimitException ์๋ฌ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ผ๋, ๋ง์ฝ Spring WebClient์์ ๋์ฉ๋ ์๋ต ์ฒ๋ฆฌ ์ค ๋งํ๋ค๋ฉด ์์ฒ๋ผ ์ค์ ํด๋ณด์ธ์!
#SpringBoot #WebClient #DataBufferLimitException #Spring์ค๋ฅํด๊ฒฐ #์คํ๋งํ #๊ฐ๋ฐ์์ผ์ #์ฝ๋ฉ๊ณต๋ถ #์คํ๋ง์นํด๋ผ์ด์ธํธ