Kafka生产者批处理超时

Kafka producer batch timeout

通过设置batch.size,我们告诉生产者对记录进行批处理,直到记录的大小达到该限制,然后发送它们。有一个奇怪的配置 linger.ms,如果生产者想要发送记录但 batch.size 没有达到等待更多。

我的问题是生产者怎么可能在记录大小达到batch.size之前发送记录?我认为等待批处理超时,如果有一些配置,它是什么?

我将生产者 batch.size 设置为 16 MB,但生产者发送记录时没有考虑该限制。​​

您搜索的参数正好是linger.ms。 它的默认值为 0,这意味着生产者将尽快发送消息(当发送方线程可用时),没有任何延迟,即使未达到 batch.size。 条件是生产者在到达batch.sizelinger.ms时间到期时开始发送消息。如果您希望生产者仅在达到 batch.size 时发送消息,您应该增加 linger.ms 时间(大于 0)并确保您的应用程序能够生成在该值之前填充批次的消息设置为linger.ms次;只有在这种情况下,生产者才会发送消息,因为 batch.size 已到达,而不是 linger.ms 过期的原因。当然,增加linger.ms意味着在您没有到达batch.size但无论如何都想发送消息时增加发送消息的延迟。