kafka 获取主题的分区计数

2022-08-31 19:41:12

如何从代码中获取任何kafka主题的分区数。我研究了许多链接,但似乎没有一个有效。

举几个例子:

http://grokbase.com/t/kafka/users/148132gdzk/find-topic-partition-count-through-simpleclient-api

http://grokbase.com/t/kafka/users/151cv3htga/get-replication-and-partition-count-of-a-topic

http://qnalist.com/questions/5809219/get-replication-and-partition-count-of-a-topic

这看起来像类似的讨论。

SO上也有类似的链接,没有一个有效的解决方案。


答案 1

转到您的目录。kafka/bin

然后运行以下命令:

./kafka-topics.sh --describe --zookeeper localhost:2181 --topic topic_name

您应该在 下查看所需的内容。PartitionCount

Topic:topic_name        PartitionCount:5        ReplicationFactor:1     Configs:
        Topic: topic_name       Partition: 0    Leader: 1001    Replicas: 1001  Isr: 1001
        Topic: topic_name       Partition: 1    Leader: 1001    Replicas: 1001  Isr: 1001
        Topic: topic_name       Partition: 2    Leader: 1001    Replicas: 1001  Isr: 1001
        Topic: topic_name       Partition: 3    Leader: 1001    Replicas: 1001  Isr: 1001
        Topic: topic_name       Partition: 4    Leader: 1001    Replicas: 1001  Isr: 1001

当使用动物园管理员不再是卡夫卡的依赖者的版本时

kafka-topics --describe --bootstrap-server localhost:9092 --topic topic_name

答案 2

在 0.82 Producer API 和 0.9 Consumer API 中,您可以使用类似的东西

Properties configProperties = new Properties();
configProperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092");
configProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.ByteArraySerializer");
configProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringSerializer");

org.apache.kafka.clients.producer.Producer producer = new KafkaProducer(configProperties);
producer.partitionsFor("test")

推荐