【问题标题】:How can I list Kafka consumer groups using Confluent's .NET Client如何使用 Confluent 的 .NET 客户端列出 Kafka 消费者组
【发布时间】:2020-05-27 03:57:59
【问题描述】:

我已经在我的开发 Windows 机器 (kafka_2.11-2.4.0.tgz) 上安装了 Kafka。一切正常,我可以使用示例批处理脚本发送和接收消息。

尝试构建 C# windows 应用程序,我在 C# windows 应用程序上使用 Confluent 的 .NET Client for Apache Kafka(版本 1.3.0.0)。但是,当我使用 Confluent 提供的示例列出组订阅时,我收到错误 System.ArgumentNullException: 'Argument 'group' must not be null. Parameter name: group',但我没有传递给该方法的参数。这是代码示例:

private static string ListConsumerGroups(string bootstrapServers) {
    string s = ($"Consumer Groups:"); 
    using (var adminClient = new AdminClientBuilder(new AdminClientConfig { BootstrapServers = bootstrapServers }).Build()) {
        var groups = adminClient.ListGroups(TimeSpan.FromSeconds(10));
        foreach (var g in groups) {
            s += "\r\n" + ($"  Group: {g.Group} {g.Error} {g.State}");
            s += "\r\n" + ($"  Broker: {g.Broker.BrokerId} {g.Broker.Host}:{g.Broker.Port}");
            s += "\r\n" + ($"  Protocol: {g.ProtocolType} {g.Protocol}");
            s += "\r\n" + ($"  Members:");
            foreach (var m in g.Members) {
                s += "\r\n" + ($"    {m.MemberId} {m.ClientId} {m.ClientHost}");
                s += "\r\n" + ($"    Metadata: {m.MemberMetadata.Length} bytes");
                s += "\r\n" + ($"    Assignment: {m.MemberAssignment.Length} bytes");
            }
        }
    }
    return s;
}

使用时间跨度参数调用adminClient.ListGroups 时代码失败(此方法中不允许使用其他参数)。我不明白 API 中是否存在错误,或者我只是遗漏了一些东西。 当使用批处理脚本列出消费者组时,我确实得到了一个有效的答案。

> kafka-consumer-groups.bat --list --bootstrap-server "localhost:9092"

【问题讨论】:

  • 所以示例代码没有运行或者你的没有?您是否创建了 github 问题?
  • 我的代码是基于confluent提供的示例代码(非常相似)。我刚刚在 gitHub 上创建了一个帐户,并在那里发布了一个问题。谢谢。

标签: c# .net apache-kafka confluent-platform


【解决方案1】:

这是 v1.3.0 中引入的回归。已在 v1.4.0-RC1 及更高版本中解决。

【讨论】:

  • 谢谢马特。我刚刚下载了 v1.4.0-RC1 并确认它可以解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2022-07-07
  • 2015-09-18
相关资源
最近更新 更多