使用NiFi中的Kafka Consumer,同一分区中的事件是否进入相同的FlowFile

时间:2019-01-18 16:01:55

标签: apache-nifi

该帖子将“最大轮询记录”设置为1,以确保一个流文件中的事件来自同一分区。 https://community.hortonworks.com/articles/223849/simple-backup-and-restore-of-kafka-messages-via-ni.html

这是否意味着如果使用Message Demarcator,同一FlowFile中的事件可以来自不同的分区?

从源代码上我认为上面的想法是真的吗? https://github.com/apache/nifi/blob/ea9b0db2f620526c8dd0db595cf8b44c3ef835be/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-0-9-processors/src/main/java/org/apache/nifi/processors/kafka/pubsub/ConsumerLease.java#L366

1 个答案:

答案 0 :(得分:2)

使用分界符时,它会按主题/分区创建捆绑,因此您将获得流文件,其中所有消息均来自同一主题分区:

https://github.com/apache/nifi/blob/ea9b0db2f620526c8dd0db595cf8b44c3ef835be/nifi-nar-bundles/nifi-kafka-bundle/nifi-kafka-0-9-processors/src/main/java/org/apache/nifi/processors/kafka/pubsub/ConsumerLease.java#L378

在帖子中解释了将最大池记录设置为1的原因,这是因为仅当每个流文件有1条消息时消息的密钥才可用,并且在这种情况下他们需要密钥。通常,最好不要这样做,并且每个流文件都包含很多消息。