2016-12-05 328 views
0

我们的要求是根据条件拆分流量数据。 我们认为使用“ExecuteStreamCommand”处理器(实习者将使用java类),但它只给出单流数据文件。我们希望有两个流量数据文件,一个用于匹配,另一个用于不匹配的标准。Apache NiFi根据条件拆分数据

我查看了“RouteText”处理器,但没有使用Java类作为其一部分的功能。

让我知道是否有人有任何建议。

+3

什么是条件,为什么你需要使用java类? – JDP10101

+0

嗨,如果指定位置的特定字符串是“ABC”,那么我必须将该消息移动到一个卡夫卡主题其他主题。 Soi希望从数据库中动态获取字符串“ABC”并检查,未来我们可能会添加更多不同的命令类型。 –

+0

用其他术语表示,您有一个传入的FlowFile。您想要使用数据库查询的结果来检查结果是否包含在特定位置的FlowFile的内容中。然后基于它是否是路由。它是否正确?你还使用什么“DB”?最后,输入FlowFile的内容是否是特定的格式? – JDP10101

回答

0

我认为你可以使用GetMongo阅读这些定义值,并将其存储在由DistributedMapCacheClientService访问的地图,然后用RouteOnContent路由基于检索值的缺席/存在传入flowfiles。

如果不工作,你可以改为路线查询结果从GetMongoPutFile然后用ScanContent,从文件系统和路径上的字典文件中读取flowfiles基于无/这些关键字的存在内容。

最后,如果一切都失败了,您可以使用ExecuteScript将这些步骤合并到单个处理器中并路由到matched/unmatched关系。它很容易处理Groovy代码,所以如果需要的话,你可以直接调用你现有的Java类。

+0

第一个不工作。所以在第二种选择中,我们如何访问“目录文件”中的mongo数据?我需要 仅供参考,Input to ScanContent是Mongo和ListeningPort。 –

+0

您必须将Mongo查询的结果写入存储在磁盘上的平面文件,并且根据查询的输出格式,也许可以使用“ReplaceText”将其正确格式化。然后,使用'PutFile'的输出路径作为RouteOnContent的字典文件路径,以便它读取这些定义。 – Andy