Spring/WebClient

[WebClient] Configuration MaxInMemorySize

blockbuddy93 2024. 3. 28. 12:19

MaxInMemorySize 설정

Codecs는 어플리케이션 메모리 문제를 피하기 위해 메모링레서 데이터를 버퍼링하는데 제한이 있다.

기본적으로 이 값은 256KB로 설정되는데, 이 값이 충분하지 않으면 다음과 같은 오류가 발생한다.

org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer

 

기본 Codecs의 한계는 다음과 같이 변경한다.

WebClient webClient = WebClient.builder()
        .codecs(configurer -> configurer.defaultCodecs().maxInMemorySize(2 * 1024 * 1024))
        .build();

 

Codecs란?

WebClient 에서 Codecs는 데이터의 인코딩 및 디코딩을 처리하는데 사용되는 구성요소이다. 즉 HTTP 요청 및 응답 본문을 읽고 쓸 때 데이터 형식을 변환하고 처리한다. 이는 JSON, XML, HTML, 또는 사용자가 정의한 데이터 형식과 같은 다양한 데이터를 처리할 수 있게 된다. 따라서 Codecs를 사용하여 원하는 데이터 형식으로 요청을 보낼 수 있고, 응답을 수신할 때는 원하는 데이터로 수신 받을 수 있다.

https://docs.spring.io/spring-framework/reference/web/webflux/reactive-spring.html#webflux-codecs

 

Reactive Core :: Spring Framework

The org.springframework.web.server package builds on the HttpHandler contract to provide a general-purpose web API for processing requests through a chain of multiple WebExceptionHandler, multiple WebFilter, and a single WebHandler component. The chain can

docs.spring.io