์ ๋ฐ์ํ ๊น
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ WebClient ์ค์ ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฉ๋ชจ๋ฆฌ ์ด์๋ฅผ ๋ฐฉ์งํ ์ ์๋๋ก ์ฝ๋ฑ(codec)์ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ์ฌ์ด์ฆ
์ ํ ๊ฐ์ ๊ฐ๊ณ ์๋ค. ์ด ๊ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก 256KB๋ก ์ค์ ๋์ด ์๋๋ฐ, ์ด ๊ฐ์ ๋์ด๊ฐ๋ ๊ฒฝ์ฐ DataBufferLimitException ์์ธ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ป๊ฒ ํด๊ฒฐํ ๊น?
DataBufferLimitException ์์ธ๊ฐ ๋ฐ์ํ์ง ์๋๋ก WebClient๋ฅผ ์ค์ ํ ๋ ์ฝ๋ฑ(codec)์ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ์ฌ์ด์ฆ ์ ํ ๊ฐ์
maxInMemorySize ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๋ก ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
ExchangeStrategies exchangeStrategies = ExchangeStrategies.builder()
.codecs(configurer -> configurer.defaultCodecs().maxInMemorySize(10 * 1024 * 1024)) // 10MB
.build();
WebClient webClient = WebClient.builder()
.exchangeStrategies(exchangeStrategies)
.build();
CodecConfigurer ํด๋์ค์์ maxInMemorySize ๋ฉ์๋ ๋ช
์ธ์๋ ์๋ฏ์ด ์ฌ์ด์ฆ ์ ํ์ ์์จ ์๋ ์๋๋ฐ,
๋ฉ์๋ ํ๋ผ๋ฏธํฐ๋ก -1์ ์ ๋ฌํ๋ฉด ๋๋ค.
์ฐธ๊ณ ๋ก ์๋์ ๊ฐ์ด Consumer๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ exchangeStrategies ๋ฉ์๋๋ deprecated ๋์๋ค.
๋ฐ๋ผ์ ์์ ์ดํด๋ณธ ExchangeStrategies ๊ฐ์ฒด ์์ฒด๋ฅผ ๋๊ธฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ์.
WebClient webClient = WebClient.builder()
.exchangeStrategies(builder -> // Deprecated ๋ ๋ฐฉ์
builder.codecs(codecs ->
codecs.defaultCodecs().maxInMemorySize(10 * 1024 * 1024)
)
).build();