我正在研究一个大量使用Apache NiFi v1.10.0的项目。我已经厌倦了浏览数百个流程组以应用本质上相同的小补丁。
我最近发现了远程进程组,我想知道是否存在将NiFi实例与其自身连接并以这种方式实现DRY的方法?我正在考虑在根组件内部实现重复组件,并通过其他进程组内部的远程访问来访问它们。这可能吗?
现在我只得到SSLHandshakeException / PKIX path building failed
如果还有其他实现DRY的方法-请告诉我。
答案 0 :(得分:4)
@Alex。我感到您的痛苦,在上一个角色中,他们有一个流程组,每个流程有100多个流程,并且会复制并粘贴整个主要组,变成1000多个流程。所有副本都在随机位置进行了少量修改。
尽管我主张以这种方式进行编程以使POC能够正常运行,但我还是大力倡导评估如何从最高级别使流动态化的主张。我执行此操作的过程是遍历DFDLC和版本控制流程,直到,例如,我有1个流程组,可以通过清除彼此之间的流程设计差异来替换2个流程组。我们认为这是优化流程的一部分,也可以减少活动处理器的总数。
我强烈建议您不要在同一群集中使用远程进程组。我还建议您在主画布上进行通用流,并在需要从更深的过程组移回主画布时将它们与输入/输出端口连接。您将最终得到这样的流程:
答案 1 :(得分:2)
您绝对可以对自己进行站点到站点的操作,但是性能会降低,因为现在您正在获取本地流文件,并通过网络连接将它们传输到集群中的所有节点,即使其中一些会回到他们所在的同一节点。
您可以使用NiFi Registry并创建包含可重用功能的版本化流程。然后,您进行一次更改,将其提交回NiFi Registry,然后更新该版本流的其他实例。
答案 2 :(得分:1)
Bryan和Steven都提供了很好的解决方案。我将解决您遇到的PKIX路径构建错误-这表明NiFi正在尝试与其他服务建立HTTPS连接(在本例中可能是本身),并且不知道如何验证所提供的公共证书。解决方案是引用配置有包含证书的 truststore 的SSLContextService
。 Apache NiFi walkthroughs提供了执行这些任务的分步说明。