java - WebClient如何实现零拷贝上传下载?

标签 java spring-webflux

您可以使用 org.springframework.web.reactive.function.client.WebClient 使用 Spring 5 WebFlux 执行零拷贝上传和下载吗?

最佳答案

你说得对,从基于文件的资源发布数据时,目前支持零拷贝。

所以下面看起来是正确的:

client.post()
      .body(BodyInserters.fromResource(new FileSystemResource(new File("file.txt"))));

现在对于读取部分,Spring Framework 目前在读取端不支持零拷贝;您可以为此在 jira.spring.io 上创建一个增强问题。

您的代码示例应如下所示:

Flux<DataBuffer> incoming = client.post()
      .retrieve().bodyToFlux(DataBuffer.class);
Mono<Void> writeOperation = DataBufferUtils.write(incoming, channel)
      .map(DataBufferUtils::release)
      .then();
// subscribe to the returned value, which will complete when writing is done

不幸的是,将数据读取到 DataBuffer 不会执行零复制,因为数据将被复制到内存中。我认为阅读方面不支持零拷贝,所以这可能是对 https://jira.spring.io 的增强请求.

关于java - WebClient如何实现零拷贝上传下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46740000/

相关文章:

java - 如何模拟返回 `Mono<Void>` 的方法

java - Spring JMS @JmsListener 一种方法的另一种并发性

java - 如何从Web读取JSON数据并将插入到数据库中

java - 如何找到 jMeter 缺少的依赖项?

java - 使用小时调整而不是语言环境来打印DateTime的最简单方法是什么?

spring - Spring Webflux Rest API(带注释的 Controller )的总处理时间

java 。将图像图标从 jpanel 1 上的 JLabel 拖放到 panel 2 上的 JLabel。添加计数器功能

java - Spring Webflux webclient 出现问题,尝试发送 post 请求时没有任何反应

reactive-programming - 订阅后函数现在可以正常执行

Netty HttpClient - 响应超时与读取超时