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
只是一个最大值
还有其他属性会影响您获得的记录数
-服务器应为获取请求返回的最小数据量。如果没有足够的可用数据,请求将在响应请求之前等待积累足够的数据。默认设置为1字节意味着,只要有一个字节的数据可用,或在等待数据到达时,提取请求超时,就会响应提取请求。将该值设置为大于1的值将导致服务器等待积累更多的数据,这会稍微提高服务器吞吐量,但会增加一些延迟fetch.min.bytes
-如果没有足够的数据立即满足fetch.min.bytes给出的要求,服务器在响应fetch请求之前将阻止的最长时间fetch.max.wait.ms
无法精确控制记录的最小数量(除非它们的长度完全相同)。还有其他设置,如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