Я установил 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"