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

How to set the max queue time in Kafka 0.9 producer?

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

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

The batching can be configured to accumulate no more than a fixed number of messages and to wait no longer than some fixed latency bound (say 64k or 10 ms).

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

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

是否还有办法在 Kafka v0.9 中配置它,或者我必须调用 KafkaProducer.close()KafkaProducer.flush() 才能这样做?

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

您需要使用 batch.sizequeue.time,而不是接受的答案中所述的 linger.ms

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

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