首页 > 解决方案 > spring kafka消费者单批拉取不同分区的数据

问题描述

我们有 1 个主题和 3 个分区,单个消费者。我们使用 Spring 的 KafkaListener 注释将数据作为批次 (25) 消费。有时我们会看到单次拉取 25 条消息包含来自不同分区的数据。

这是春天的预期行为吗?如果是这样,提交如何工作?当我们通过手动提交调用 acknowle() 方法时,spring 会负责提交所有分区。

标签: springapache-kafkakafka-consumer-apispring-kafka

解决方案


不是春天,是卡夫卡;这就是它的工作原理。

您必须确认每条消息,但是,是的,容器会处理提交。

max.poll.records如果您只想要来自单个分区的消息,则可以设置为 1。

顺便说一句,手动确认是很不寻常的;通常最好让容器使用AckMode.BATCHor来处理偏移量AckMode.RECORD


推荐阅读