web-dev-qa-db-fra.com

DataBufferLimitException: limite dépassée sur le nombre maximal d'octets pour tamponner l'erreur webflux

lorsque j'envoie un fichier et reçois un tableau d'octets, j'ai toujours un problème avec webflux pour recevoir le tableau. l'erreur générée:

org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
    at org.springframework.core.io.buffer.LimitedDataBufferList.raiseLimitException(LimitedDataBufferList.Java:101)
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException

Maintenant, comment résoudre ce problème dans Webflux?

7
taveced

Ce workerd pour moi

  1. Créez un bean dans votre classe de configuration ou dans la classe principale Springbootapplication

    @Bean
    public WebClient getWebClientBuilder(){
        return   WebClient.builder().exchangeStrategies(ExchangeStrategies.builder()
                .codecs(configurer -> configurer
                          .defaultCodecs()
                          .maxInMemorySize(16 * 1024 * 1024))
                        .build())
                      .build();
    }
    
  2. Ensuite, accédez à la classe souhaitée dans laquelle vous souhaitez utiliser le client Web

      @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)
            }
    
2
Guru Cse