创建新的FlowFile或重用旧的

derM:

我正在编写一个自定义处理器,在其中转换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,并写入原始文件的内容:

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);
}
最大G:

这取决于您的要求,但通常应在原始FlowFile中编写。

如果使用创建新的流文件session.create(),则新的UUID将与该流文件相关联,这将使您的数据源变得一团糟。

在以下情况下制作新的flowFile是值得的:
-您要同时保留原始和新的flowfile-
从外部源(kafka,hdfs,FS ...)读取
-1个输入N输出(例如splitRecords处理器)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建新对象或重用旧对象Java

iOS tableview在下载新图像时重用旧图像

使用旧对象的新键名创建新的 Js 对象数组

Spring MVC实例化一个新的Bean,而不是在Model(@ModelAttribute)中重用旧的Bean。

如何在新的重定向中使用mod_rewrite重用旧的url参数值

添加新磁盘后,Kafka会重用旧磁盘进行写入吗?

如何使用旧列表中的项目创建新列表?

如何使用旧阵列中的数据创建新阵列?

初始生产构建创建包代码,但所有后续构建都重用旧包

使用Javascript创建新对象以重用代码

使用Deepcopy创建新的obj,但使用旧的obj创建新的obj共享变量

SQL:如何使用旧表和新的空列中的数据创建新表

用旧样式创建Rarfile?

JVM何时决定重用旧的lambda?

如何重用旧的用户名?

Scanf跳过变量并重用旧变量

如何重用旧的 LPT HASP 密钥?

重用对象实例与每次更新都创建新对象

libGDX:每次重用屏幕还是创建新实例更好?

尽管重用设置为true,Tensorflow仍创建新变量

重用类级别变量还是创建新的局部变量?

如何使用旧列表中的唯一元素创建新列表

JavaScript:在创建的对象上将变量设置为新函数,它仍会调用旧函数

使用旧数组中的内容创建新数组,同时保持旧数组不变

如何使用旧变量创建新变量并在Groovy中辅助它的某些值

为什么RecyclerView.notifyItemChanged()将创建一个新的ViewHolder并同时使用旧的ViewHolder和新的ViewHolder?

@_的元素是否可重用于新的子例程调用或已创建新的@_?

使用Java Keytool续订证书-重用旧的CSR?

更改项目名称以将其存档,重用旧名称