class KafkaAdminClient implements Closeable {

    public Set<String> getTopics() {
        LOG.debug("Retrieving all topics");
        try {
            Set<String> topics = getNewAdminClient()
                .listTopics(new ListTopicsOptions().listInternal(true))
                .names().get(operationTimeout, TimeUnit.MILLISECONDS);
            if (topics.isEmpty()) {
                LOG.warn("Unable to list Kafka topics");
            }
            return Collections.unmodifiableSet(topics);
        } catch (InterruptedException | ExecutionException | TimeoutException e) {
            throw new AdminOperationException("Unable to list Kafka topics", e);
        }
    }

    public  KafkaAdminClient(Properties properties);

}