通过设置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
但无论如何都想发送消息时,增加发送消息的延迟。