Java 使用批处理从Kafka读取数据使用SpringBoot无法正常工作

Java 使用批处理从Kafka读取数据使用SpringBoot无法正常工作,java,spring-boot,apache-kafka,spring-kafka,Java,Spring Boot,Apache Kafka,Spring Kafka,我使用SpringBoot并希望使用批处理从Kafka读取数据。我的application.yml如下所示: spring: kafka: bootstrap-servers: - localhost:9092 properties: schema.registry.url: http://localhost:8081 consumer: auto-offset-reset: earliest max-poll-reco

我使用
SpringBoot
并希望使用批处理从
Kafka
读取数据。我的
application.yml
如下所示:

spring:
  kafka:
    bootstrap-servers:
      - localhost:9092
    properties:
      schema.registry.url: http://localhost:8081
    consumer:
      auto-offset-reset: earliest
      max-poll-records: 50000
      enable-auto-commit: true
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: io.confluent.kafka.serializers.KafkaAvroDeserializer
      group-id: "batch"
      properties:
        fetch.min.bytes: 1000000
        fetch.max.wait.ms: 20000
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: io.confluent.kafka.serializers.KafkaAvroSerializer
    listener:
      type: batch
我的听众:

@KafkaListener(id = "bar2", topics = "TestTopic")
public void listen(List<ConsumerRecord<String, GenericRecord>> records) {
   log.info("start of batch receive. Size::{}", records.size());
}
我设置了必需的设置:
fetch.min.bytes
fetch.max.wait.ms
,但它们没有任何效果


在日志中,我看到一个包的大小不超过33000在任何设置。我心碎了,我不明白为什么会发生这种情况?

max.poll.records
只是一个最大值

还有其他属性会影响您获得的记录数

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


无法精确控制记录的最小数量(除非它们的长度完全相同)。

还有其他设置,如max.fetch.bytes,您可能需要查看。可能需要查看此设置,谢谢您的回答,但我仍然不明白为什么包大小总是不同的。我在这里看到了您的答案:,并得到了大小为30000的结果:批量接收开始。大小:2812开始批量接收。大小:30000开始批量接收。大小:2839开始批量接收。大小::867个包的大小总是不同的如果你想等待更长的时间才能获得“完整”批次,你需要增加我提到的属性。嗨,@Gary Russell,我更新了我的问题。请看。我使用以下设置:
fetch.min.bytes
fetch.max.wait.ms
,但它们不起任何作用。
2019-10-04 11:08:19.693  INFO 2123 --- [     bar2-0-C-1] kafka.batch.demo.DemoApplication         : start of batch receive. Size::33279
2019-10-04 11:08:19.746  INFO 2123 --- [     bar2-0-C-1] kafka.batch.demo.DemoApplication         : start of batch receive. Size::33353
2019-10-04 11:08:19.784  INFO 2123 --- [     bar2-0-C-1] kafka.batch.demo.DemoApplication         : start of batch receive. Size::33400
2019-10-04 11:08:19.821  INFO 2123 --- [     bar2-0-C-1] kafka.batch.demo.DemoApplication         : start of batch receive. Size::33556
2019-10-04 11:08:39.859  INFO 2123 --- [     bar2-0-C-1] kafka.batch.demo.DemoApplication         : start of batch receive. Size::16412