我使用的是spring-boot 2.1.7.RELEASE和spring-kafka 2.2.7.RELEASE.我使用@KafkaListener注释创建一个使用者,并且我使用使用者的所有默认设置。
根据apachekafka文档,"max.poll.records"的默认值是500。
在这里,我试图了解spring是如何处理记录处理的。现在我的问题是,如果我们已经在主题a上发布了500条消息,并且有一个消费者(使用@KafkaListener(订阅了这个主题,
- 这个spring-listener是会获取所有这500条记录,然后在将一条接一条的记录传递给用@KafkaListener注释的方法之前进行某种缓存,还是一次只提取一条记录,并将其传递给用@cafkaListener注记的方法
@KafkaListener
基于KafkaMessageListenerContainer
,而完全基于ConsumerRecords<K, V> org.apache.kafka.clients.consumer.Consumer.poll(Duration timeout)
API。
您提到的选项与Spring for Apache Kafka无关。即使没有Spring,您也会处理相同的行为。
有关如何从Kafka中提取记录的更多信息,请参阅返回的ConsumerRecords
。
对于卡夫卡来说,我们如何获取记录并不重要。只有抵消承诺才重要。但情况不同。您需要自己理解Spring for Apache Kafka只是标准Kafka客户端的一个包装器。它不会对如何从主题中投票记录发表意见。