使用partitionsfor方法获取kafka 0.8.0中producer中的分区数

35g0bw71  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(760)

有人支持我们吗 partitionsFor 在Kafka版本0.8.0的生产者中的方法?我想用这个方法得到给定一个Kafka主题的分区数。
如果这个方法在kafka 0.8.0中不可用,那么在这个特定版本的kafka中,最简单的方法是什么?

n9vozmp4

n9vozmp41#

也可以使用listtopics()方法

ArrayList<Topics> topicList = new ArrayList<Topics>();
    Properties props = new Properties();
    Map<String, List<PartitionInfo>> topics;
    Topics topic;
    InputStream input = 
 getClass().getClassLoader().getResourceAsStream("kafkaCluster.properties");
    try {
        props.load(input);
        props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, 
 props.getProperty("BOOTSTRAP_SERVERS_CONFIG"));
        props.put("key.deserializer", 
 "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", 
 "org.apache.kafka.common.serialization.StringDeserializer");
        KafkaConsumer<String, String> consumer = new KafkaConsumer<String, 
   String>(props);
        topics = consumer.listTopics();
        // System.out.println(topics.get(topics));
        for (Map.Entry<String, List<PartitionInfo>> entry : 
    topics.entrySet()) {
            System.out.println("Key = " + entry.getKey() + ", Value = " + 
     entry.getValue());
            topic = new Topics();
            topic.setTopic_name(entry.getKey());
            topic.setPartitions(Integer.toString(entry.getValue().size()));
            topicList.add(topic);
        }
     } catch (IOException e) {
        e.printStackTrace();
     }
c90pui9n

c90pui9n2#

你为什么不试试下面的方法https://stackoverflow.com/a/35458605/5922904. zkutils还有getpartitionsfortopics方法,也可以使用该方法。虽然我自己没有试过

相关问题