Kafka生产者批量超时

时间:2018-01-02 09:57:58

标签: apache-kafka kafka-producer-api

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

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

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

1 个答案:

答案 0 :(得分:2)

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