【发布时间】:2016-11-13 02:40:22
【问题描述】:
有没有办法在 NiFi 的自定义处理器中同时写入不同的流?例如,我有第三方库使用类似这样的 API 进行重要处理:
public void process(InputStream in, OutputStream foo, OutputStream baa, List<String> args)
{
...
foo.write(things);
baa.write(stuff);
...
}
但我能找到的唯一示例都只使用一个输出流:
FlowFile transform = session.write(original, new OutputStreamCallback() {
@Override
public void process(OutputStream out) throws IOException {
out.write("stuff");
}
});
处理是分批完成的(由于它的规模很大),因此执行所有处理然后写出单独的流程是不切实际的。
我能想到的唯一方法是多次处理输入:(
为了澄清,我想写入多个FlowFiles,使用session.write(flowfile, callback)方法,因此可以分别发送/管理不同的流
【问题讨论】:
-
我不这么认为,我知道写入流文件的唯一方法是使用 OutputStreamCallback,它只有一个函数(进程),它只接受一个参数(一个 OutputStream)。
-
是的,但是 TeeOutputStream 允许您拥有 1 个写入 2 个单独文件的流,不是吗(这还不够吗?
-
我不相信,TeeOutputStream 将相同的东西写入两个流,我的函数没有(例如我的示例中的“事物”和“东西”)。谢谢
-
另外,我想使用 session.write(flowfile, callback) 方法写入多个 flowfile (这不清楚,我会更新问题)。
标签: java apache-nifi