用一个每0.5秒发一条小消息的场景,对比fetch.min.bytes=1和1MB两种配置下consumer真实的等待时间,看凑批门槛和等待超时这两个参数是怎么博弈的。
命令 · python c1 = Consumer({"fetch.min.bytes": 1, "fetch.wait.max.ms": 500}) # producer真实每0.5秒发一条几字节的小消息
真实等待时间: 0.536s, 拿到: tiny-3
fetch.min.bytes=1真实意味着"只要有至少1字节的新数据,立刻返回"——broker端一收到这条消息,几乎马上就能把它交给consumer,真实等待时间基本等于消息真正到达的时间点,跟生产节奏(0.5秒一条)对得上。
命令 · python c2 = Consumer({"fetch.min.bytes": 1048576, "fetch.wait.max.ms": 3000})
真实等待时间: 3.173s, 拿到: tiny-4
每一步都是本文上面用两种fetch.min.bytes配置跑出来的原始结果。