java - 在两个 Spring Boot 应用程序之间传输大数据
问题描述
我有两个 Spring Boot 服务名称 A 和 B。
- 服务 A 接收一个多部分文件(大小很大 > 100MB - 1GB)。
- 服务 A 需要将文件传输到服务 B(问题区域)
- 服务 B 对数据执行一些操作并返回到服务 A。
- 从 A 到 B 的调用是使用 RestTemplate 发送的。
问题领域
- 服务 A 不会将整个文件加载到内存中,而是以块的形式从 Multipart InputStream 中读取。
- 块被发送到 B,而不是完整的流。
是否可以将多部分的完整 InputStream 发送到服务 B,以便服务 A 不会加载文件以及通过 http/...(任何其他方式)分块文件
(我已经解决了在底层 linux 平台上使用 fifo 的一种方法,并且服务 A 正在管道上连续写入,而服务 B 正在读取) - 如果可能的话,正在寻找某种方式来使用 http 来实现它。
背景- 我希望服务 B 控制他们想要多少块而不是服务 A。这是因为服务 B 执行的操作 - 服务 B 添加了一些额外的字节,因此当对下一个数据执行反向操作时,它可以看到这些额外的字节以了解应该读取多少块。
更新 GITHUB 我不知道我在哪里弄错了?我粘贴了完整的项目 - https://github.com/robin-carry/large-data-transfer
所有逻辑都在下面的客户端/服务器上的主要文件/README.md 解释了我正在尝试/未能做的所有事情......
客户端/src/main/java/com/lockdown/lazy/client/controller/UploadController.java server/src/main/java/com/lockdown/lazy/server/controller/OpServiceController.java
解决方案
Apache Http Client 文档讨论了请求/响应实体流- 看看这是否有助于解决您的场景。
推荐阅读
- laravel - Laravel 多对多表
- square - square connect v2 支付表单在 Safari 和 Opera 浏览器中不起作用
- eclipse - ESP32 无法使用 Arduino 插件在 Eclipse 上编程
- python-3.x - 将 vti 文件转换为 numpy 数组
- string - 固定字符串匹配 - 大模式集/小输入率
- azure - 如何在 Azure 中部署 netcore IHosted Service 控制台应用程序?
- r - ggplot2:一组实线,另一组点
- r - 使用复杂语句在 R 中重新编码
- python - 如何:每小时执行一次终端命令的 Python 脚本?
- azure - 突然,用户无法同意 Microsoft 应用程序权限