Apache nifi 如何在Nifi中实现聚合器EIP的等价物

Apache nifi 如何在Nifi中实现聚合器EIP的等价物,apache-nifi,Apache Nifi,我对ApacheCamel和EIP非常有经验,我很难理解如何在Nifi中实现等价物。我知道Nifi使用了一种不同的范式(基于流的编程),但我不认为我试图做的是不合理的 简而言之,我希望将每个文件的内容发送到许多rest服务,并希望将响应聚合到单个文档中,该文档将存储在elasticsearch中。我可能还会做一些进一步的处理和清理,以改进存储内容(但这不是我当前的问题) 屏幕截图是我试图实现的一个快速模型,但我对Nifi了解不够,不知道如何正确实现这个模式 如果要获取一段数据,然后转移到流的多个

我对ApacheCamel和EIP非常有经验,我很难理解如何在Nifi中实现等价物。我知道Nifi使用了一种不同的范式(基于流的编程),但我不认为我试图做的是不合理的

简而言之,我希望将每个文件的内容发送到许多rest服务,并希望将响应聚合到单个文档中,该文档将存储在elasticsearch中。我可能还会做一些进一步的处理和清理,以改进存储内容(但这不是我当前的问题)

屏幕截图是我试图实现的一个快速模型,但我对Nifi了解不够,不知道如何正确实现这个模式


如果要获取一段数据,然后转移到流的多个部分,然后再聚合回来,则需要有一种方法让MergeContent知道哪些数据段一起

通常有两种方法可以做到这一点

第一种是在“碎片整理模式”中使用MergeContent。可以将此视为反转由SplitText等拆分处理器之一执行的拆分操作。例如,您将一个包含100行的文件拆分为100个流文件,每个流文件包含1行,然后对每个流文件执行一些操作,然后希望收敛回来。拆分处理器生成一组标准的拆分属性(在处理器的文档中描述),碎片整理模式知道如何相应地对拆分进行装箱并将其合并在一起。这可能不适用于您的示例,因为您不是从拆分处理器开始的


第二种方法是MergeConent中的“相关性属性”。这会告诉合并内容仅合并具有指定属性相同值的流文件。在您的示例中,当GetFile拾取一个文件并将其发送到3个InvokeHttp处理器时,将创建3个流文件,并且它们的“filename”属性都应设置为从磁盘拾取的文件的名称。因此,告诉MergeContent根据文件名进行关联应该可以做到这一点,并可能将最小和最大条目数设置为您期望的数字,如3,以及其中一个条目出现故障或挂起时的最长时间。

谢谢,我最后在文档中看到了这些选项。只需要做一个原型。谢谢