์™œ ๋ฐœ์ƒํ• ๊นŒ

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” 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();