我用的是融合的KafkaPython(https://github.com/confluentinc/confluent-kafka-python)使用python向kafka发送一些消息。我很少发送消息,所以希望延迟非常低。
如果我这样做,我可以让消息以大约2毫秒的延迟显示给我的消费者:
conf = { "bootstrap.servers" : "kafka-test-10-01",
"queue.buffering.max.ms" : 0,
'batch.num.messages': 1,
'queue.buffering.max.messages': 100,
"default.topic.config" : {"acks" : 0 }}
p = confluent_kafka.Producer(**conf)
p.produce(...)
但是:延迟只有在我和这个新制作人发送了第一条消息之后才会降到接近零。后续消息的延迟接近2ms标记。
但是第一条消息有大约1秒的延迟。为什么?
1条答案
按热度按时间dfddblmv1#
《librdkafka》的作者magnus edenhill记录了一些有用的参数,可以设置这些参数来减少librdkafka客户端的延迟:
https://github.com/edenhill/librdkafka/wiki/how-to-decrease-message-latency
您不显示使用者参数,但根据您的描述,听起来使用者正在轮询,并且在发布第一条消息之前没有得到任何消息(空消息),因此它会等待默认的500毫秒
fetch.error.backoff.ms
尝试再次轮询并获取第一条消息之前的间隔。在此之后,消息的速度可能足够快,因此不会触发错误后退。或许可以试着设置fetch.error.backoff.ms
放低一点,看看是否有帮助。