【发布时间】:2022-01-14 07:11:50
【问题描述】:
我想知道一个消费者如何从多个分区消费,具体来说,从不同分区读取消息的顺序是什么?
我看过源代码(Consumer、Fetcher),但我无法真正了解所有内容。
这是我认为会发生的事情:
按顺序读取分区。即:一个分区中的所有消息都将被读取,然后再继续下一个分区。如果我们到达max.poll.records 而没有消耗整个分区,那么下一次提取将继续读取当前分区,直到它耗尽,然后再继续下一个。
我尝试将max.poll.records 设置为一个相对较低的数字,然后看看会发生什么。
如果我向一个主题发送消息然后启动一个消费者,那么在继续到下一个分区之前,所有消息都会从一个分区读取,即使该分区中的消息数高于max.poll.records。
然后我尝试通过连续向该分区发送消息(使用 JMeter)来查看是否可以将消费者“锁定”在一个分区中。但我做不到:来自其他分区的消息也在被读取。
【问题讨论】:
-
这能回答你的问题吗? Are Kafka partitions consumed evenly?
-
不保证跨分区顺序
标签: apache-kafka kafka-consumer-api