Rdkafka.net库缓慢的消费性能
本文关键字:性能 缓慢 net Rdkafka | 更新日期: 2023-09-27 18:17:49
现在我正在使用OnMessage事件处理程序的简单/高级消费者示例,性能相当差。(每分钟120,000条消息vs(使用我们的c++库每分钟1M条消息)
可能是延迟在消费消息等待OnMessage事件,而不是实现一个繁忙的循环和使用。consume (TimeSpan)?
var config = new Config() { GroupId = "example-csharp-consumer" };
using (var consumer = new EventConsumer(config, "127.0.0.1:9092"))
{
consumer.OnMessage += (obj, msg) =>
{
string text = Encoding.UTF8.GetString(msg.Payload, 0, msg.Payload.Length);
Console.WriteLine($"Topic: {msg.Topic} Partition: {msg.Partition} Offset: {msg.Offset} {text}");
};
consumer.Subscribe(new []{"testtopic"});
consumer.Start();
Console.WriteLine("Started consumer, press enter to stop consuming");
Console.ReadLine();
}
默认情况下,librdkafka (rdkafka-dotnet构建在其上)被调为高吞吐量。如果您想要低延迟:"将queue. buffers .max.ms设置为1将确保消息被尽快发送。"(来自:https://github.com/edenhill/librdkafka/blob/master/INTRODUCTION.md)
现在我重读了你的问题,我看到你可能在吞吐量之后。或许可以试着调整下面列出的一些设置:https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md
使用EventConsumer/OnMessage不应该比调用Consumer慢。在循环中消费,因为这是EventConsumer在内部做的事情。注意:我目前正在改进rdkafka-dotnet API,同时也在研究性能——当我知道更多的时候,我会在这里发布更多。