Using Admin API

1. Creating Admin Client

Aspect Description Detail
AdminClient Programmatic cluster mgmt Async
Config bootstrap.servers Required
Futures KafkaFuture results get()

Example: Create admin client

Properties p = new Properties();
p.put("bootstrap.servers", "localhost:9092");
Admin admin = Admin.create(p);

2. Creating Topics

Param Description Detail
NewTopic name, partitions, RF Spec
configs Per-topic overrides Optional
createTopics Batch create Async

Example: Create topic

admin.createTopics(List.of(
  new NewTopic("orders", 6, (short) 3))).all().get();

3. Listing Topics

Method Description Detail
listTopics() All topic names Set
ListTopicsOptions Include internal __topics
names() Future of names get()

Example: List topics

Set<String> topics = admin.listTopics().names().get();

4. Describing Topics

Field Description Detail
partitions Per-partition info Leader/ISR
replicas Assigned brokers List
describeTopics Topic metadata Map result

Example: Describe topic

TopicDescription d = admin.describeTopics(List.of("orders"))
  .allTopicNames().get().get("orders");
System.out.println(d.partitions().size());

5. Deleting Topics

Aspect Description Detail
deleteTopics Remove topics Async
delete.topic.enable Must be true Broker config
Irreversible Data lost Confirm
Warning: Topic deletion permanently removes all data; verify the topic name before deleting.

Example: Delete topic

admin.deleteTopics(List.of("obsolete-topic")).all().get();

6. Creating Partitions

Aspect Description Detail
createPartitions Increase count only No decrease
NewPartitions Target total count increaseTo
Caution Breaks key→partition Reorders

Example: Add partitions

admin.createPartitions(
  Map.of("orders", NewPartitions.increaseTo(12))).all().get();

7. Altering Configs

Aspect Description Detail
incrementalAlterConfigs SET/DELETE/APPEND Preferred
ConfigResource TOPIC/BROKER Target
Dynamic No restart Live

Example: Alter topic config

ConfigResource cr = new ConfigResource(ConfigResource.Type.TOPIC, "orders");
admin.incrementalAlterConfigs(Map.of(cr, List.of(
  new AlterConfigOp(new ConfigEntry("retention.ms","604800000"),
    AlterConfigOp.OpType.SET)))).all().get();

8. Describing Configs

Aspect Description Detail
describeConfigs Current config values Effective
source Default/dynamic/static Origin
ConfigResource What to inspect Topic/broker

Example: Describe config

Config c = admin.describeConfigs(List.of(cr)).all().get().get(cr);
c.entries().forEach(e -> System.out.println(e.name()+"="+e.value()));

9. Describing Consumer Groups

Field Description Detail
members Active consumers Assignment
state Stable/Rebalancing Health
coordinator Group coordinator broker Node

Example: Describe group

ConsumerGroupDescription g = admin
  .describeConsumerGroups(List.of("order-svc"))
  .all().get().get("order-svc");

10. Listing Consumer Groups

Method Description Detail
listConsumerGroups All groups Names + state
valid() Successful listings Future
Filter By state optional inStates

Example: List groups

admin.listConsumerGroups().valid().get()
  .forEach(g -> System.out.println(g.groupId()));

11. Deleting Consumer Groups

Aspect Description Detail
deleteConsumerGroups Remove group + offsets Async
Empty Only No active members Required
Error NonEmptyGroup if active Stop first

Example: Delete group

admin.deleteConsumerGroups(List.of("old-group")).all().get();

12. Deleting Records

Aspect Description Detail
deleteRecords Truncate before offset Low-water mark
RecordsToDelete beforeOffset(n) Per partition
Use GDPR, cleanup Reclaim space

Example: Delete records

TopicPartition tp = new TopicPartition("orders", 0);
admin.deleteRecords(Map.of(tp, RecordsToDelete.beforeOffset(1000)))
  .all().get();