java在两个spring boot应用程序之间传输大数据
我有两个spring引导服务名称A和B
- 服务A接收一个多部分文件(大小巨大,大于100MB-1GB)李>
- 服务A需要将文件传输到服务B(问题区域)
- 服务B对数据执行一些操作并返回服务A
- 从A到B的调用使用RestTemplate发送李>
问题区域
- 服务A不在内存中加载整个文件,而是从多部分InputStream中分块读取李>
- 块被发送到B,而不是一个完整的流李>
是否可以将多部分的完整InputStream发送到服务B,以便服务A不加载文件,也不通过http/将文件分块。。。(任何其他方式)
(我解决这个问题的一个方法是在底层linux平台上使用fifo,服务A在管道上连续写入,服务B在读取)——如果可能的话,我想用http实现它
Background-我希望服务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。爪哇
# 1 楼答案
Apache Http客户端文档讨论了Request/Response entity streaming——看看这是否有助于解决您的场景
# 2 楼答案
你可以设计与组织的界面。springframework。网状物多部分。然后,将MultipartFile用作参数——在发送方将其用作外部客户端,并在接收方的控制器中实现