我正在编写一个自定义处理器,在其中转换FlowFile的内容。为了这个问题的简单性,它应该只写同样的内容。
public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException {
FlowFile flowFile = session.get();
if (flowFile == null) return;
session.write(
flowFile,
(input, output) -> input.transferTo(output) // Do transfomration here
);
session.transfer(REL_SUCCESS, flowFile);
}如果我是对的,我在那里所做的就是将原始FlowFile的内容替换为-在这种情况下,内容的标识。
现在有一种方法
session.create(flowFile);它创建了一个新的FlowFile。
这让我思考,无论我是否做错了,写在原来的FlowFile。做这件事很简单,所以感觉很好。但是也许创建一个新的FlowFile会更好呢?
,这两种方式的含义是什么?什么时候选择其中一种是正确的?还是观察到的行为是一样的?
这是一些代码,它创建了一个新的FlowFile,编写了原始FlowFile的内容:
public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException {
FlowFile flowFile = session.get();
if (flowFile == null) return;
FlowFile newFile = session.create(flowFile);
session.write(
newFile,
output) -> session.read(flowFile).transferTo(output) // Do transfomration here
);
session.transfer(REL_SUCCESS, newFile);
}发布于 2020-05-25 11:58:31
这取决于您的需求,但是通常您应该在原始的FlowFile中编写。
如果您使用session.create()创建了一个新的流程文件,一个新的UUID将与您的流文件相关联,这将使您的数据来源变得杂乱无章。
在以下情况下,做出新的flowFile是值得的:
发布于 2020-05-25 17:49:59
https://stackoverflow.com/questions/62000497
复制相似问题