如何从 InputStream 创建 Vert.x ReadStream

问题描述

我想将本地进程的标准输出流式传输到 Vert.x HttpResponse。

要做到这一点,我想我必须将 java.io.InputStream(流处理标准输出)流式传输/转换/管道到 io.vertx.core.streams.ReadStream,然后我可以将 ReadStream 管道传输到 { {1}}。

我正在寻找一种对内存影响较小的解决方案,因此无法在内存中读取整个标准输出,然后将其刷新到 HttpResponse 中。

谢谢

解决方法

退房:

https://gist.github.com/Stwissel/a7f8ce79785afd49eb2ced69b56335de

这是我如何使用它:

InputStream is = ...
          AsyncInputStream ais = new AsyncInputStream(
            vertx,vertx.getOrCreateContext(),is);
          ais.pipeTo(response);
,

另一种方法是使用 vertx-java.io 库中的 OutputToReadStream 类(我是作者):

new OutputToReadStream(vertx).wrap(inputStream).pipeTo(response);