Как я могу перечислить группы потребителей Kafka, используя Confluent's. NET Client - PullRequest
0 голосов
/ 19 февраля 2020

Я установил Kafka на моем компьютере windows (kafka_2.11-2.4.0.tgz). Все работает нормально, и я могу отправлять и получать сообщения, используя образцы пакетных сценариев.

Пытаясь создать приложение C# windows, я использую клиент Confluent. NET для Apache Kafka (версия 1.3.0.0) в приложении C# windows. Однако, когда я использую пример, предоставленный 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 с аргументом timespan (другие аргументы в этом методе не допускаются). Я не понимаю, есть ли ошибка в API или я просто что-то упустил. При использовании пакетных сценариев для перечисления группы потребителей я получаю верный ответ.

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

1 Ответ

1 голос
/ 19 февраля 2020

это была регрессия, введенная в v1.3.0. Это решено в v1.4.0-RC1 и позже.

...