我有一个Kafka流媒体应用程序,该应用程序订阅了许多主题,每个主题都有许多分区。 创建应用程序拓扑并启动它时,我是否知道将哪些主题的哪些分区分配给了我的应用程序的当前实例?我想知道这与该实例尚未处理任何记录无关。
我知道获得记录时,可以processorContext.partition()
和processorContext.topic()
来获取正在处理的当前记录的分区/主题信息。但是我不是在寻找那个。
我正在kafka流方面寻找KafkaConsumer.assigment
的等效项。
我也尝试了以下代码,但s的大小为0。
<Prepare builder and sconfig>
kafkaStream = new KafkaStreams (builder, sconfig);
kafkaStream.start ();
Collection<StreamsMetadata> s = kafkaStream.allMetadata();
System.out.println("StreamsMetadata: size is " + s.size());
for (StreamsMetadata m : s) {
Set<TopicPartition> tp = m.topicPartitions();
System.out.println ("TopicPartition: " + tp.toString());
}
答案 0 :(得分:1)
据我所知,Kafka Streams中没有现有的API可以公开此信息。可以从Kafka使用者(由Kafka Streams使用)中获取此信息,但未在Kafka Streams中公开。