Список всех разделов тем в Apache Kafka с примерами кода

Чтобы вывести список всех разделов тем в Apache Kafka, вы можете использовать API KafkaAdminClient. Вот несколько способов добиться этого с помощью примеров кода:

Метод 1: использование KafkaAdminClient

import org.apache.kafka.clients.admin.AdminClient;
import org.apache.kafka.clients.admin.AdminClientConfig;
import org.apache.kafka.clients.admin.ListTopicsResult;
import org.apache.kafka.clients.admin.TopicListing;
import org.apache.kafka.common.KafkaFuture;
import java.util.Collection;
import java.util.Properties;
import java.util.concurrent.ExecutionException;
public class KafkaTopicPartitionLister {
    public static void main(String[] args) {
        Properties properties = new Properties();
        properties.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        try (AdminClient adminClient = AdminClient.create(properties)) {
            ListTopicsResult listTopicsResult = adminClient.listTopics();
            KafkaFuture<Collection<TopicListing>> topicsFuture = listTopicsResult.listings();
            Collection<TopicListing> topics = topicsFuture.get();
            for (TopicListing topic : topics) {
                System.out.println("Topic: " + topic.name() + " Partitions: " + topic.partitions());
            }
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
    }
}

Метод 2. Использование инструмента командной строки Kafka (kafka-topics.sh)

kafka-topics.sh --bootstrap-server localhost:9092 --list

Метод 3. Использование KafkaConsumer API

import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.PartitionInfo;
import java.util.List;
import java.util.Properties;
public class KafkaTopicPartitionLister {
    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("group.id", "test-group");
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        try (Consumer<String, String> consumer = new KafkaConsumer<>(props)) {
            List<PartitionInfo> partitions = consumer.partitionsFor("your_topic_name");

            for (PartitionInfo partition : partitions) {
                System.out.println("Topic: " + partition.topic() + " Partition: " + partition.partition());
            }
        }
    }
}