我的 Kafka 消费者的轮询速度比我预期的要快。是否有一些配置我可以更改以使其一直等待fetch.max.wait.ms
?
我将 fetch.max.wait.ms 设置为某个秒数 (5)。我设置fetch.min.bytes
了一些大字节数 (99,988,800)。
我阅读了文档(但可能遗漏了一些内容):
https://kafka.apache.org/documentation/
获取.min.bytes
服务器应为获取请求返回的最小数据量。如果可用数据不足,则请求将等待积累足够多的数据,然后再回答请求。1 字节的默认设置意味着一旦单个字节的数据可用或获取请求在等待数据到达时超时,就会立即响应获取请求。将其设置为大于 1 的值将导致服务器等待大量数据的积累,这可以稍微提高服务器吞吐量,但会增加一些额外的延迟。
fetch.max.wait.ms
如果没有足够的数据立即满足 fetch.min.bytes 给定的要求,服务器在回答获取请求之前将阻塞的最长时间。
fetch.max.wait.ms=5000, fetch.min.bytes=99988800
根据我的配置选项和数据集,我希望调用poll
在返回任何记录之前始终阻塞 5 秒。
相反,对 的调用poll
有时会在不到一秒的时间内解决,并且总是有一些少量的记录。
这是示例运行的输出:
// send 100 records
// doesn't matter how
// timestamp -> records received
// (date, hour and minute are not shown, just the relevant seconds.millis)
32.475 -> 10
33.392 -> 12
34.116 -> 16
37.477 -> 16
38.395 -> 18
39.118 -> 17
42.479 -> 7
43.397 -> 4
没有延迟真的接近5s。
沧海一幻觉
慕沐林林
相关分类