如何在不影响内存的情况下在rxjava中传输文件

如何在不影响内存的情况下在rxjava中传输文件,java,java-stream,filestream,vert.x,Java,Java Stream,Filestream,Vert.x,我有如下要求 我的应用程序需要调用一个api,该api以二进制数据(pdf或小于30MB的图像文件)的形式返回响应 收到二进制响应后,我需要准备一个包含其他元素的json对象,并调用第二个api(该api不支持流式处理)来处理请求 第1步中的问题是,如果我得到一个大文件,比如10或20MB的二进制数据,服务器内存就会被占用。我不能流一旦我读了文件在步骤1至步骤2,因为第二个api不支持流。我们有哪些选项可以消耗更少的内存并将json发送到第二个api?我们使用的是vertx&反应式java。请建

我有如下要求

  • 我的应用程序需要调用一个api,该api以二进制数据(pdf或小于30MB的图像文件)的形式返回响应
  • 收到二进制响应后,我需要准备一个包含其他元素的json对象,并调用第二个api(该api不支持流式处理)来处理请求

  • 第1步中的问题是,如果我得到一个大文件,比如10或20MB的二进制数据,服务器内存就会被占用。我不能流一旦我读了文件在步骤1至步骤2,因为第二个api不支持流。我们有哪些选项可以消耗更少的内存并将json发送到第二个api?我们使用的是vertx&反应式java。请建议。

    我认为没有其他选择。除了更改需求或约束之外,这取决于您如何接收响应,以及JSON构造是否可以在没有API1完整响应的情况下开始。如果没有,就没有其他方法了——您必须将整个第一个响应存储在内存中。在调用step1之前,具有其他元素的JSON构造已经可用,但只有一个元素依赖于step1的响应。Step2API要求所有元素都在一起。如何将JSON负载中的二进制文件发送到base64编码的第二个api?您使用哪种客户端,
    HttpClient
    WebClient
    ?请添加一些代码片段,否则问题将模糊不清,无法正确回答。是的,我们使用base64编码,我们使用rxjava webclient。