【发布时间】:2020-12-12 05:48:31
【问题描述】:
我有两个 Spring Boot 服务名称 A 和 B。
- 服务 A 接收到一个多部分文件(大小 > 100MB - 1GB 的巨大文件)。
- 服务 A 需要将文件传输到服务 B(问题区域)
- 服务 B 对数据执行一些操作并返回到服务 A。
- 从 A 到 B 的调用是使用 RestTemplate 发送的。
问题领域
- 服务 A 不会将整个文件加载到内存中,而是以块的形式从 Multipart InputStream 中读取。
- 块被发送到 B,而不是完整的流。
是否可以将 multipart 的完整 InputStream 发送到服务 B,以便服务 A 不会加载文件以及通过 http/...(任何其他方式)分块文件
(我解决它的一种方法是在底层 linux 平台上使用 fifo,并且服务 A 在管道上连续写入,而服务 B 正在读取)-如果可能的话,我正在寻找某种方式来实现它。
背景 - 我希望服务 B 控制他们想要多少块,而不是服务 A。这是因为服务 B 执行的操作 - 服务 B 添加了一些额外的字节,所以当对下一个数据执行反向操作时,它可以看到这些额外的字节以了解应该读取多少块。
Github 更新 我不确定我在哪里弄错了?我粘贴了完整的项目 - https://github.com/robin-carry/large-data-transfer
所有逻辑都在下面的客户端/服务器上的主要文件/README.md 解释了我正在尝试/未能做的所有事情......
client/src/main/java/com/lockdown/lazy/client/controller/UploadController.java server/src/main/java/com/lockdown/lazy/server/controller/OpServiceController.java
【问题讨论】:
标签: java spring-boot inputstream