DataBufferLimitException: Exceeded limit on max bytes to buffer webflux error DataBufferLimitException: Exceeded limit on max bytes to buffer webflux error spring spring

DataBufferLimitException: Exceeded limit on max bytes to buffer webflux error


This workerd for me

  1. Create a bean in your one of the configuration class or the main Springbootapplication class

    @Beanpublic WebClient getWebClientBuilder(){    return   WebClient.builder().exchangeStrategies(ExchangeStrategies.builder()            .codecs(configurer -> configurer                      .defaultCodecs()                      .maxInMemorySize(16 * 1024 * 1024))                    .build())                  .build();}
  2. Next go to your desired class where you want to use the webclient

      @RestController / @Bean/ @Service   public class PaySharpGatewayController {        @Autowired        WebClient webClient;        public void test(){         String out = webClient                      .get()                      .uri("end point of an API")                      .retrieve()                      .bodyToMono(String.class)                     .block();         sysout(out)        }


I suppose this issue is about adding a new spring.codec.max-in-memory-size configuration property in Spring Boot. Add it to the properties like:

spring:  codec:    max-in-memory-size: 10MB


i was getting this error for a simple RestController (i post a large json string).

here is how i successfully changed the maxInMemorySize

import org.springframework.context.annotation.Configuration;import org.springframework.http.codec.ServerCodecConfigurer;import org.springframework.web.reactive.config.ResourceHandlerRegistry;import org.springframework.web.reactive.config.WebFluxConfigurer;@Configurationpublic class WebfluxConfig implements WebFluxConfigurer {    @Override    public void addResourceHandlers(ResourceHandlerRegistry registry) {        registry.addResourceHandler("/swagger-ui.html**")            .addResourceLocations("classpath:/META-INF/resources/");        registry.addResourceHandler("/webjars/**")            .addResourceLocations("classpath:/META-INF/resources/webjars/");    }    @Override    public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {        configurer.defaultCodecs().maxInMemorySize(16 * 1024 * 1024);    }}

this was surprisingly hard to find