卡夫卡生产者批处理超时



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

最新更新