如何在Kafka 0.9生产者中设置最大队列时间?

时间:2016-03-09 23:47:23

标签: apache-kafka kafka-producer-api

如何在Kafka v0.9中设置最大队列时间?

我的理解是Kafka生产者将尝试将队列中的消息缓冲到一定大小,然后将队列中的消息作为批处理发送到代理。但是在Kafka v0.8中," queue.buffering.max.ms"的配置。即使它们小于缓冲区大小,它也会在达到时间限制时发送队列中的消息。

  

批处理可以配置为累积不超过固定数量的消息,并且等待不超过一些固定的延迟限制(比如64k或10 ms)。

来自Kafka 0.9文件: http://kafka.apache.org/documentation.html#design_asyncsend。 (此部分与Kafka 0.8.2相同)

但我没有找到" queue.buffering.max.ms"的配置。或v0.9生成器配置部分中的等效部分http://kafka.apache.org/documentation.html#producerconfigs

是否仍有办法在Kafka v0.9中配置此功能,或者我必须致电KafkaProducer.close()KafkaProducer.flush()才能这样做?

2 个答案:

答案 0 :(得分:2)

对于该配置,请使用batch.sizelinger.ms

答案 1 :(得分:0)

您需要按照接受的答案中的说明使用batch.sizequeue.time,而不是linger.ms

linger.ms是发送一批请求之前的延迟,但默认为零,而不是发送批次之前的最长时间。

有关详细信息,请参阅:https://kafka.apache.org/documentation