使用kafka-net .NET客户端API时,我遇到了性能问题(类似于Java API上的this issue),并且无法看到我是如何错误配置使用者的。我正在使用Wurstmeister Kafka Docker容器,未在OSX上使用docker-machine/virtualbox进行修改。发送消息大约需要1ms。消费大约需要950ms:kafka-net上的性能问题消费者
10:58:47,495 DEBUG [Threadpool worker] Kafka Utils [(null)]- >>>>: consuming
10:58:47,498 DEBUG [Threadpool worker] Kafka-net [(null)]- BrokerRouter: Refreshing metadata for topics: microservice.rapids
10:58:47,929 DEBUG [Threadpool worker] Kafka-net [(null)]- Received message of size: 89 From: http://192.168.99.100:9092/
10:58:48,432 DEBUG [Threadpool worker] Kafka-net [(null)]- Awaiting message from: http://192.168.99.100:9092/
10:58:48,436 DEBUG [Threadpool worker] Kafka-net [(null)]- Found address 192.168.99.100 for 192.168.99.100
10:58:48,436 DEBUG [Threadpool worker] Kafka-net [(null)]- Using address 192.168.99.100 for 192.168.99.100
10:58:48,445 DEBUG [Threadpool worker] Kafka Utils [(null)]- <<<<: consuming (950)ms
以下是我如何构建消费者。
Uri[] urls;
urls = ConfigurationManager.AppSettings ["kafka-urls"]
.Split (',').Select (s => new Uri (s.Trim())).ToArray();
KafkaOptions options = new KafkaOptions (urls);
BrokerRouter router = new BrokerRouter (options);
return new Consumer (new ConsumerOptions (topic, router));
这是香草,因为我可以做到这一点。
500ms似乎花费在刷新元数据上。这是我可以在BrokerRouter的施工期间预先启动的东西,因此在消费过程中不会完成这项工作吗?
任何其他想法为什么这需要这么长时间,或如何避免延误?
我最近有一些问题,并通过确保我连接的URI指定了协议和IP地址而不是主机名如下来解决它们:new Uri(“tcp://”+ ipAddressString +“ :“+ port) 使用http作为协议从来没有为我工作 – thorkia