Есть ли способ одновременной записи в разные потоки в пользовательском процессоре в NiFi? К примеру у меня есть сторонние библиотеки, которые делают значительную обработку с использованием API-интерфейсов, которые работают что-то вроде этого:Apache NiFi: Вывод на несколько потоков одновременно?
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)
, таким образом, различные потоки могут быть отправлены/управляются отдельно
Использование [TeeOutputStream] (https://commons.apache.org/proper/commons-io/javadocs/api-2.4/org/apache/commons/io/output/TeeOutputStream.html) из вопрос? Смотрите: http://stackoverflow.com/questions/7987395/how-to-write-data-to-two-java-io-outputstream-objects-at-once – GPI
Я так не думаю, единственный способ, которым я знаю, писать в файл потока используется OutputStreamCallback, который имеет только одну функцию (процесс), которая принимает только один аргумент (OutputStream). – foobarking
Да, но TeeOutputStream позволяет вам иметь 1 поток, который записывает в 2 отдельных файла, isn (t, что достаточно? – GPI