Apache kafka 更好地理解卡夫卡中的最小获取字节?

Apache kafka 更好地理解卡夫卡中的最小获取字节?,apache-kafka,kafka-consumer-api,Apache Kafka,Kafka Consumer Api,我正在为Kafka调整一些配置,以便将记录批处理到文件中 我看到了minfetchbytes,它是在一个主题的N个分区上进行一次轮询返回的最小字节数。以下是我关注的场景: 我将记录数据的min fetch设置为100mb。假设我有价值250mb的数据。我做了两次轮询,并将200mb持久化。现在我有50mb在队列中,但我仍然希望它被处理,但不打算有更多的数据进入。如果超时了,它会抓取剩余的50mb吗?对不起,我应该更仔细地查看文档。请注意,这与超时一起使用 fetch.max.wait.ms 通过

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

我看到了
minfetchbytes
,它是在一个主题的N个分区上进行一次轮询返回的最小字节数。以下是我关注的场景:


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

对不起,我应该更仔细地查看文档。请注意,这与超时一起使用

fetch.max.wait.ms

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

tl;dr如果超时超过队列填充之前的时间,它将只返回剩余的50mb