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 中解决这个问题?

原文由 taveced 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3k
1 个回答

这对我有用:

  1. 创建一个 @Bean 在你的配置类之一或主要 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();
   }

  1. 接下来,转到您想要使用 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);
       }
   }

原文由 Guru Cse 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题