【发布时间】:2020-09-13 02:26:15
【问题描述】:
假设我的消费者正在从具有多个主题且每个主题具有多个分区的代理进行轮询。我在同一个消费组中总共有 5 个消费者。如果我的每个消费者都进行民意调查,返回的数据顺序是什么?
例如我的第一个消费者被分配到以下分区:
topicA - 分区 0
topicA - 分区 1
topicB - 分区 0
topicC - 分区 3
topicD - 分区 5
我的问题是,在单次 1 轮询中,我会在按顺序移动到下一个主题/分区之前收到来自该主题/分区的所有可用消息吗?含义例如:
在一个轮询循环中,我按顺序收到了这个...
行为A
topicA - 分区 1 - 从偏移 1000...2000 收到消息
topicA - 分区 0 - 从偏移 500...700 收到消息
topicB - 分区 0 - 从偏移 100...150 收到消息
topicC - 分区 3 - 从偏移 5500...6000 收到消息
topicD - 分区 5 - 从偏移量 0...100 收到消息
或者在那个单一的 1 轮询循环中,有可能接收到这个消息顺序吗?相同的分区和主题将被拆分(topicA 分区 1,topicA - 分区 0 和 topicC - 分区 3)
行为 B
topicA - 分区 1 - 从偏移 1000...1499 收到消息
topicA - 分区 0 - 从偏移 500...520 收到消息
topicA - 分区 1 - 从偏移 1500...2000 收到消息
topicB - 分区 0 - 从偏移量 100...150 收到消息 - 与行为 A 相同,没有拆分
topicC - 分区 3 - 从偏移 5500...5799 收到消息
topicA - 分区 0 - 从偏移 521...700 收到消息
topicD - 分区 5 - 从偏移量 0...100 接收到消息 - 与行为 A 相同,没有拆分
topicC - 分区 3 - 从偏移 5800...6000 收到消息
我想知道这种行为,以及它是否保证并且将是一致的行为 A 或 B 或者可以配置。我已经对此进行了搜索,但在文档或之前提出的问题中找不到它。我自己也对其进行了测试,它似乎总是行为 A,但我想确认一下。提前感谢并感谢您的任何帮助。
【问题讨论】:
标签: java apache-kafka kafka-consumer-api