如何使用 C# 从 Kafka 获取主题列表

Bir*_*nda 5 .net c# apache-kafka

我想从 Kafka 获取主题列表。我正在使用 kafka-net 客户端,但无法在有关获取主题列表的文档中找到。

edu*_*nho 13

您可以使用 Confluence.Kafka 包中提供的 AdminClient 列出所有主题:

using Confluent.Kafka;
using Confluent.Kafka.Admin;

var adminConfig = new AdminClientConfig()
{
   BootstrapServers = "SERVER_URL"
};

using (var adminClient = new AdminClientBuilder(adminConfig).Build())
{
   var metadata = adminClient.GetMetadata(TimeSpan.FromSeconds(10));
   var topicsMetadata = metadata.Topics;
   var topicNames = metadata.Topics.Select(a => a.Topic).ToList();
}
Run Code Online (Sandbox Code Playgroud)


Mel*_*ats 4

根据文档,您应该能够执行此操作

producer.GetMetadata(true, null)
Run Code Online (Sandbox Code Playgroud)

public Metadata GetMetadata(bool allTopics, string topic)

查询集群的元数据(阻塞)。

allTopics = true - 请求集群中的所有主题

https://docs.confluence.io/4.0.1/clients/confluence-kafka-dotnet/api/Confluence.Kafka.Producer.html#Confluence_Kafka_Producer_GetMetadata_System_Boolean_System_String_

  • dotnet core 中没有 Producer 类支持 nuget ,并且现有的 I Producer deosnt 也有这个 GetMetadata() 方法。 (2认同)