Kafka Producer何时开始计算linger.ms的等待时长?
Kafka Producer
linger.ms 计时规则说明 关于batch.size的配置规则如下:
该配置指定了待发送消息批次的大小上限。若对应分区累积的消息字节数未达到该阈值,系统将等待
linger.ms设定的时长,等待更多记录进入批次。linger.ms默认值为0,即即使累积的批次大小未达到batch.size设定的阈值,也会立即发送记录。
针对linger.ms的计时起点问题,结论非常明确:计时器从对应分区的某个空批次写入第一条消息的瞬间开始启动,具体运行逻辑如下:
- Kafka生产者会为每个主题分区单独维护待发送批次,当分区没有正在填充的在制批次时,新抵达的消息会触发创建新的空批次
- 第一条消息写入这个空批次的时刻,就是该批次
linger.ms倒计时的起点,后续陆续写入同个批次的消息都不会重置、重启这个计时器 - 如果倒计时走完时,批次累积的消息大小还没到
batch.size的阈值,批次会直接被标记为就绪,进入发送队列 - 如果在倒计时结束前,批次大小先达到了
batch.size阈值,会立刻触发批次发送,对应的等待计时器直接失效,不再继续等待 - 当
linger.ms保持默认值0时,第一条消息写入后根本不会启动等待计时器,批次会直接被标记为可发送,这也是默认配置下生产消息延迟极低的原因
内容的提问来源于stack exchange,提问作者Mandroid
相关产品推荐
相关产品推荐

