DataBufferLimitException: バッファリングする最大バイト数の制限を超えました webflux エラー 質問する

DataBufferLimitException: バッファリングする最大バイト数の制限を超えました webflux エラー 質問する

ファイルを送信中に、バイト配列を受信します。Webflux で配列を受信するときに常に問題が発生します。次のようなエラーがスローされます。

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

これをWebFluxで解決する方法をご存知ですか?

ベストアンサー1

これは私にとってはうまくいきました:

  1. @Bean構成クラスまたはメイン クラスの 1 つにを作成しますSpringBootApplication

    @Bean
    public WebClient webClient() {
        final int size = 16 * 1024 * 1024;
        final ExchangeStrategies strategies = ExchangeStrategies.builder()
            .codecs(codecs -> codecs.defaultCodecs().maxInMemorySize(size))
            .build();
        return WebClient.builder()
            .exchangeStrategies(strategies)
            .build();
    }
    
  2. 次に、 を使用する目的のクラスに移動しますWebClient

    @Service
    public class TestService {
    
        @Autowired
        private WebClient webClient;
    
        public void test() {
            String out = webClient
                .get()
                .uri("/my/api/endpoint")
                .retrieve()
                .bodyToMono(String.class)
                .block();
    
            System.out.println(out);
        }
    }
    

おすすめ記事