在不使用 CLI 工具的情况下,以及在尝试生成主题之前,如何以编程方式知道主题是否已在 Kafka 集群中创建?
我遇到了一个主题不存在的问题,我们的应用程序试图生成一个不存在的主题,但它只在 90 秒(元数据超时)后收到通知。我想知道是否有办法从 Java 代码中知道该主题是否存在,以便我们可以在实际尝试发送消息之前进行检查。我想我可以查看 Kafka CLI utils 使用的代码,但我想知道是否有我可能错过的 API 或更简单的方法。
您可以使用AdminClient#listTopics()检查给定主题是否存在,如下所示:
Properties props = new Properties();
props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
try (AdminClient client = AdminClient.create(props)) {
ListTopicsOptions options = new ListTopicsOptions();
options.listInternal(true); // includes internal topics such as __consumer_offsets
ListTopicsResult topics = client.listTopics(options);
Set<String> currentTopicList = topics.names().get();
// do your filter logic here......
}
Run Code Online (Sandbox Code Playgroud)