springboot kafka 获取topoic
时间: 2023-07-26 16:12:07 浏览: 110
springboot和kafka的集成
在 Spring Boot 中,可以使用 Spring Kafka 提供的 KafkaAdmin 和 AdminClient 来获取 Kafka 集群中的 topic 列表。
以下是获取 Kafka topic 列表的示例代码:
```
@Autowired
private KafkaAdmin kafkaAdmin;
public List<String> getTopics() {
AdminClient adminClient = AdminClient.create(kafkaAdmin.getConfig());
ListTopicsOptions options = new ListTopicsOptions();
options.timeoutMs(5000);
ListTopicsResult result = adminClient.listTopics(options);
Set<String> topicNames = null;
try {
topicNames = result.names().get();
} catch (InterruptedException | ExecutionException e) {
// 异常处理
}
return new ArrayList<>(topicNames);
}
```
上述代码中,通过自动注入 KafkaAdmin 对象来获取 KafkaAdmin 的配置信息,然后创建 AdminClient 对象,利用 listTopics() 方法获取 topic 名称的集合。最后,通过转换为 List 返回 topic 名称列表。
需要注意的是,上述代码中的 topic 列表获取方法是同步方法,如果 Kafka 集群中的 topic 较多或者 Kafka 集群响应时间较长,可能会导致应用程序出现阻塞情况。在实际应用中,建议采用异步方法获取 topic 列表,或者使用定时任务来获取 topic 列表并缓存起来,以提高应用程序的响应速度。
阅读全文