Kafka生产者批处理超时
Kafka producer batch timeout
通过设置batch.size
,我们告诉生产者对记录进行批处理,直到记录的大小达到该限制,然后发送它们。有一个奇怪的配置 linger.ms
,如果生产者想要发送记录但 batch.size
没有达到等待更多。
我的问题是生产者怎么可能在记录大小达到batch.size
之前发送记录?我认为等待批处理超时,如果有一些配置,它是什么?
我将生产者 batch.size
设置为 16 MB,但生产者发送记录时没有考虑该限制。
您搜索的参数正好是linger.ms
。
它的默认值为 0,这意味着生产者将尽快发送消息(当发送方线程可用时),没有任何延迟,即使未达到 batch.size
。
条件是生产者在到达batch.size
或linger.ms
时间到期时开始发送消息。如果您希望生产者仅在达到 batch.size
时发送消息,您应该增加 linger.ms
时间(大于 0)并确保您的应用程序能够生成在该值之前填充批次的消息设置为linger.ms
次;只有在这种情况下,生产者才会发送消息,因为 batch.size
已到达,而不是 linger.ms
过期的原因。当然,增加linger.ms
意味着在您没有到达batch.size
但无论如何都想发送消息时增加发送消息的延迟。
通过设置batch.size
,我们告诉生产者对记录进行批处理,直到记录的大小达到该限制,然后发送它们。有一个奇怪的配置 linger.ms
,如果生产者想要发送记录但 batch.size
没有达到等待更多。
我的问题是生产者怎么可能在记录大小达到batch.size
之前发送记录?我认为等待批处理超时,如果有一些配置,它是什么?
我将生产者 batch.size
设置为 16 MB,但生产者发送记录时没有考虑该限制。
您搜索的参数正好是linger.ms
。
它的默认值为 0,这意味着生产者将尽快发送消息(当发送方线程可用时),没有任何延迟,即使未达到 batch.size
。
条件是生产者在到达batch.size
或linger.ms
时间到期时开始发送消息。如果您希望生产者仅在达到 batch.size
时发送消息,您应该增加 linger.ms
时间(大于 0)并确保您的应用程序能够生成在该值之前填充批次的消息设置为linger.ms
次;只有在这种情况下,生产者才会发送消息,因为 batch.size
已到达,而不是 linger.ms
过期的原因。当然,增加linger.ms
意味着在您没有到达batch.size
但无论如何都想发送消息时增加发送消息的延迟。