Чтобы вывести список всех разделов тем в 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());
}
}
}
}