在NiFi上,如何区分来自两个不同的Kakfa的消息?

时间:2018-12-17 07:33:18

标签: apache-nifi

我有两个不同的应用程序,分别名为A1和A2。每个应用程序都有自己的Kakfa服务器。来自这两个KAKFA服务器(代理)的消息将发送到NiFi。

每个Kakfa都有不同的主题名称,因此我可以区分来自Kakfa的消息。但是,除了Kafka的主题名称外,NiFi中还有其他方法可以区分来自两个不同的Kakfa的消息吗?他们是使用NiFi处理器来检查主题名称,然后确定下一条路线的人吗?

非常感谢。 问候, 是的

2 个答案:

答案 0 :(得分:4)

如果您使用NiFi的Kafka处理器(ConsumeKafka / ConsumeKafkaRecord)接收来自Kafka的消息,则它们将以FlowFiles的形式输出消息。它们带有一个名为kafka.topic的属性,该属性将具有消息来自的主题的名称。

要基于主题名称路由消息,可以使用RouteOnAttribute处理器。举例来说,您有两个主题topicAtopicB。然后,您必须像这样配置RouteOnAttribute处理器:

enter image description here

enter image description here

然后根据您的要求将关系topic-atopic-b连接起来以分隔流。如果您要添加更多的Kafka来源,您所要做的就是用另一个动态关系更新RouteOnAttribute。例如:topic-c : ${kafka.topic:equals('topicC')}

答案 1 :(得分:2)

另一个解决方案。为此,您可以使用CryptographicHashContent处理器。您将获得内容的唯一哈希码,并根据此哈希码确定消息。

注意:由于非标准的旧版实现,HashContent处理器从Apache NiFi 1.8.0开始已被标记为已弃用。