首页 > 解决方案 > 更好地理解 Kafka 中的 Min Fetch 字节数?

问题描述

查看一些配置,我正在为 Kafka 调整以将记录批处理到文件中。

我看到min fetch bytes这是跨主题的 N 个分区的单个轮询返回的最小字节数。这是我关心的场景:

我将 min fetch 设置100mb为记录数据的价值。假设我有250mb有价值的数据。我做了两次民意调查并坚持200mb。现在..我已经50mb坐在队列中,但我仍然希望它被处理,但不打算有更多数据进入。如果超时,它会抓住剩余的 50mb 吗?

标签: apache-kafkakafka-consumer-api

解决方案


抱歉,我应该更仔细地查看文档。看到这个和超时一起使用。

fetch.max.wait.ms

通过设置 fetch.min.bytes,您可以告诉 Kafka 等到它有足够的数据发送后再响应消费者。fetch.max.wait.ms 让您控制等待多长时间。默认情况下,Kafka 最多会等待 500 毫秒。如果没有足够的数据流向 Kafka 主题来满足返回的最小数据量,这会导致最多 500 毫秒的额外延迟。如果您想限制潜在的延迟(通常是由于 SLA 控制了应用程序的最大延迟),您可以将 fetch.max.wait.ms 设置为较低的值。如果将 fetch.max.wait.ms 设置为 100 ms 并将 fetch.min.bytes 设置为 1 MB,则 Kafka 将收到来自消费者的 fetch 请求,并在它有 1 MB 数据要返回时或在 100 之后响应数据ms,以先发生者为准。

tl;博士如果在队列被填充之前超时超过,它只会返回剩余的 50mb


推荐阅读