Чтобы подражать kafka-configs --entity-type topics --entity-name "topic" --describe
, вы должны иметь возможность использовать AdminClient#describeConfigs
simlar для этого.
Здесь я отфильтровываю только те конфигурации, которые были явно определены пользователем.Если вы удалите фильтр, вы получите все конфиги уровня по умолчанию и уровня брокера, а также
Optional<List<ConfigEntry>> dynamicTopicConfigEntries;
try {
// given org.apache.kafka.client.admin.AdminClient
ConfigResource resource = new ConfigResource(ConfigResource.Type.TOPIC, "topic");
dynamicTopicConfigEntries = Optional.of(adminClient.describeConfigs(Collections.singletonList(resource))
.all()
.thenApply(configMap -> configMap.get(resource).entries()
.stream().filter(e -> e.source() == ConfigEntry.ConfigSource.DYNAMIC_TOPIC_CONFIG)
.collect(toList())
)
.get());
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException("Unable to get topic description");
}
Аналогично, для этой команды поддерживается флаг --alter
(неимейте код, доступный для этого)
Кроме того, KIP-248 - один, чтобы смотреть.