【问题标题】:Extending a native NiFi processor扩展原生 NiFi 处理器
【发布时间】:2018-07-11 11:06:18
【问题描述】:

我已经知道如何编写自定义处理器(扩展 org.apache.nifi.processor.AbstractProcessor)。我已经使用了这种技术,我很乐意创建自定义 org.apache.nifi.components.PropertyDescriptororg.apache.nifi.processor.Relationship 字段,以及覆盖 onTrigger 方法。此外,我知道如何设置构建、建立 Manifest 并创建我的 .nar 文件。

我无法弄清楚是否存在扩展原生 NiFi 处理器的合理模式。我希望扩展一个原生处理器,以便我可以使用我的扩展类(而不是其他类)进行新的单元测试。

至少,我要做的就是扩展一个处理器并为其定义的特定PropertyDescriptor 设置值。镀金可能会阻止用户(例如通过 NiFi 画布)更改此配置。

谁能提供任何指导或提供一些参考资料?

谢谢!


附加细节:我的具体目标是在原生JoltTransformJSON processor 中设置JOLT_SPEC 的值。虽然,我希望有一个约定可以在这个特定的类和字段之外设置 PropertyDescriptor 值。

【问题讨论】:

  • 为了澄清,当您说扩展时,您是否希望您所做的更改覆盖现有的本机处理器?
  • 我希望更改仅限于我的子类。但是,如果在这里子类化是一种反模式,我对其他技术持开放态度。
  • 那么您是否尝试为 JoltTransform 处理器设置默认值?
  • 是的,但我真的很想了解这种模式的可行性。在这种特殊情况下,我想创建各种预配置类,为这个属性设置不同的值。例如,我可能会创建JoltTransformJSON processor 的子类并定义为MyTransformTweetTimestampProcessorMyTransformTweetLocationProcessor。这些示例类将分别设置不同的值。
  • 知道了。感谢您的澄清。

标签: java apache-nifi


【解决方案1】:

没有什么可以阻止您使用具有这些自定义行为的子类特殊实现来构建 NAR,但对我来说这听起来没有必要。您没有通过新行为扩展这些处理器的功能,您只是预先配置值并限制访问。这两个步骤都可以通过本机 NiFi 功能完成。

我建议查看API 或使用NiFi CLINiPyAPI 之类的工具来编写此行为的脚本——从静态资源中读取JOLT_SPEC,将其作为PropertyDescriptor 值提供,然后将处理器上的 ACL 设置为对特定用户只读。

【讨论】:

  • 其实我的问题是:是否有可能创建一个定制的 niti 处理器,从 satndard nifi 处理器扩展一个??
  • 是的,为你的处理器创建一个新的 Maven 模块,依赖nifi-standard-processors,然后在你的代码中扩展处理器(例如public class CustomizedEncryptContent extends EncryptContent {})。
猜你喜欢
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
相关资源
最近更新 更多