Есть ли способ проверить, все ли брокеры работают в Кафке? - PullRequest
0 голосов
/ 04 января 2019

Я использую Confluent.kafka для моего c # издателя и потребительского приложения. Прежде чем публиковать или принимать какое-либо сообщение, я хотел бы проверить, все ли брокеры (конечные точки) работают и работают.

Я нашел несколько статей об этом, но большинство из них не являются окончательными, или они предназначены для Java, я специально ищу .net.

Спасибо

1 Ответ

0 голосов
/ 05 января 2019

Если вы знаете, сколько брокеров должно быть в кластере , вы можете использовать AdminClient, чтобы вывести список всех брокеров, о которых контроллер Kafka знает о

using (var adminClient = new AdminClient(new AdminClientConfig { BootstrapServers = brokerList }))
{
    var meta = adminClient.GetMetadata(TimeSpan.FromSeconds(20));
    Console.WriteLine($"{meta.OriginatingBrokerId} {meta.OriginatingBrokerName}");
    meta.Brokers.ForEach(broker =>
        Console.WriteLine($"Broker: {broker.BrokerId} {broker.Host}:{broker.Port}"));

Источник - https://github.com/confluentinc/confluent-kafka-dotnet/blob/master/examples/AdminClient/Program.cs

Однако вам действительно нужно будет проверить подмножество посредников, в которых существуют реплики тем (т. Е. Описать тему вместо этого и проверить количество реплик), и что вообще существует доступный контроллер (который будет, если AdminClient вернул данные) ... Производитель и Потребитель уже предоставляют сведения об исключениях, когда соединение также недоступно для установления.

...