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