kafka生成器参数需要发送一条消息才能生效

时间:2017-01-20 19:37:44

标签: python apache-kafka latency confluent-kafka

我使用confluent-kafka-python(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 个答案:

答案 0 :(得分:1)

librdkafka的作者Magnus Edenhill记录了一些有用的参数,可以减少任何librdkafka客户端的延迟:

https://github.com/edenhill/librdkafka/wiki/How-to-decrease-message-latency

您不会显示您的消费者参数,但是从您的描述中可以看出消费者正在轮询并且在第一条消息发布之前正确地得到任何内容(空消息),因此它等待默认的500毫秒{{1在尝试再次轮询并获取第一条消息之前的间隔。之后,消息可能足够快,以至于不会触发错误退回。也许尝试将fetch.error.backoff.ms设置得更低,看看是否有帮助。