我有两个不同的应用程序,分别名为A1和A2。每个应用程序都有自己的Kakfa服务器。来自这两个KAKFA服务器(代理)的消息将发送到NiFi。
每个Kakfa都有不同的主题名称,因此我可以区分来自Kakfa的消息。但是,除了Kafka的主题名称外,NiFi中还有其他方法可以区分来自两个不同的Kakfa的消息吗?他们是使用NiFi处理器来检查主题名称,然后确定下一条路线的人吗?
非常感谢。 问候, 是的
答案 0 :(得分:4)
如果您使用NiFi的Kafka处理器(ConsumeKafka / ConsumeKafkaRecord)接收来自Kafka的消息,则它们将以FlowFiles
的形式输出消息。它们带有一个名为kafka.topic
的属性,该属性将具有消息来自的主题的名称。
要基于主题名称路由消息,可以使用RouteOnAttribute
处理器。举例来说,您有两个主题topicA
和topicB
。然后,您必须像这样配置RouteOnAttribute处理器:
然后根据您的要求将关系topic-a
和topic-b
连接起来以分隔流。如果您要添加更多的Kafka来源,您所要做的就是用另一个动态关系更新RouteOnAttribute
。例如:topic-c : ${kafka.topic:equals('topicC')}
答案 1 :(得分:2)
另一个解决方案。为此,您可以使用CryptographicHashContent
处理器。您将获得内容的唯一哈希码,并根据此哈希码确定消息。
注意:由于非标准的旧版实现,HashContent
处理器从Apache NiFi 1.8.0开始已被标记为已弃用。