我正在为我的C#发布者和使用者应用程序使用Confluent.kafka。在发布或使用任何消息之前,我想检查所有代理(端点)是否已启动并正在运行。
我已经找到了一些有关它的文章,但是大多数文章不是结论性的,或者它们是针对Java的,我专门在寻找.net。
谢谢
答案 0 :(得分:0)
如果您知道集群中应该有多少个代理人,则可以使用AdminClient列出卡夫卡控制器知道的所有代理人
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
但是,您实际上只需要检查存在主题副本的代理的子集(即描述主题并检查副本数),并且根本没有可用的Controller(如果存在AdminClient返回的数据)...生产者和使用者已经提供了有关无法建立连接的异常详细信息。