rdkafka dotnet库消费者性能低下

0pizxfdo  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(464)

现在我正在学习onmessage事件处理程序的简单/高级消费者示例,但是性能非常差(每分钟12万条消息,与之相比(使用我们的c++库,每分钟1百万条消息)
可能是等待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();
}
kmbjn2e3

kmbjn2e31#

默认情况下,librdkafka(rdkafka dotnet的构建基础)被调优为高吞吐量。如果您想要低延迟:“将queue.buffering.max.ms设置为1将确保消息尽快发送。”(发件人:https://github.com/edenhill/librdkafka/blob/master/introduction.md)
现在我重读了你的问题,我看你可能在追问。或许可以尝试调整下列部分设置:https://github.com/edenhill/librdkafka/blob/master/configuration.md
使用eventconsumer/onmessage不应该比在循环中调用consumer.consumer慢,因为这是eventconsumer在内部做的事情。注意:我目前正在改进rdkafka dotnetapi,同时也在研究性能——我知道更多信息后会在这里发布更多信息。

相关问题