Java 为什么我的卡夫卡消费者调查这么快?

Java 为什么我的卡夫卡消费者调查这么快?,java,apache-kafka,kafka-consumer-api,spring-kafka,Java,Apache Kafka,Kafka Consumer Api,Spring Kafka,我的卡夫卡消费者的投票速度比我预期的要快。在fetch.max.wait.ms中是否有一些配置可以更改,使其一直等待 我将fetch.max.wait.ms设置为秒数(5)。我将fetch.min.bytes设置为一些较大的字节数(9998800) 我阅读了文档(但可能遗漏了一些内容): fetch.min.bytes 服务器应为获取请求返回的最小数据量。如果没有足够的可用数据,请求将在响应请求之前等待积累足够的数据。默认设置为1字节意味着,只要有一个字节的数据可用,或在等待数据到达时,提

我的卡夫卡消费者的投票速度比我预期的要快。在
fetch.max.wait.ms
中是否有一些配置可以更改,使其一直等待

我将fetch.max.wait.ms设置为秒数(5)。我将
fetch.min.bytes
设置为一些较大的字节数(9998800)

我阅读了文档(但可能遗漏了一些内容):

  • fetch.min.bytes

  • 服务器应为获取请求返回的最小数据量。如果没有足够的可用数据,请求将在响应请求之前等待积累足够的数据。默认设置为1字节意味着,只要有一个字节的数据可用,或在等待数据到达时,提取请求超时,就会响应提取请求。将该值设置为大于1的值将导致服务器等待积累更多的数据,这会稍微提高服务器吞吐量,但会增加一些延迟

  • fetch.max.wait.ms

  • 如果没有足够的数据立即满足fetch.min.bytes给出的要求,则服务器在响应提取请求之前将阻止的最长时间

根据我的配置选项和数据集,我希望对
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的延迟。

使用属性
fetch.max.wait.ms=5000
您说过:“即使没有足够的数据可以提取,也不要等待超过5秒”。在执行轮询之前,您没有指定最小秒数。您可以通过启动2个kafka消费者来测试此行为,在其中一个消费者中设置
fetch.max.wait.ms=20000
,在另一个消费者中设置默认值。您将看到,在具有默认设置的消费者中,您几乎会立即收到消息,而在具有
fetch.max.wait.ms=20000的消费者中,您将不得不稍等片刻。我在我的机器上通过设置fetch.max.wait.ms=20000尝试了它,有时需要15秒来接收记录,有时需要10秒等等,但不会超过20秒。

您还需要调整max.partition.fetch.bytes、message.max.bytes和max.message.bytes。
如果每条记录的大小约为100KB,则将有10条记录触发传递。这可能就是您在案例中看到的情况。

我不确定,我们正在使用它,它对我们有效。所以我要确定,如果你的设置一开始就被选中了?私有映射jsonConsumerConfigs(){Map props=new HashMap();props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG,200);props.put(ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG,10000);props.put(ConsumerConfig.FETCH_MIN_BYTES_CONFIG,2147483647);返回props;}@xerige2你能让它为春季卡夫卡工作吗?另外,是否为spring kafka或kafka consumer类设置了配置?
// 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