首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kafka多消费者

Kafka多消费者
EN

Stack Overflow用户
提问于 2019-02-09 12:58:14
回答 2查看 241关注 0票数 0

当我们有多个消费者从单个分区的主题中读取时,所有消费者都有可能得到所有的消息。我已经创建了两个消费者,手动偏移commit.started,第一个消费者,2分钟后启动第二个消费者。第二个消费者正在从第一个消费者停止读取的消息中读取。有没有可能第二个消费者会从头开始阅读所有的信息。我是卡夫卡的新手,请帮帮我。

EN

回答 2

Stack Overflow用户

发布于 2019-02-09 13:22:24

在您的消费者中,您将使用commitSync,它提交上次轮询返回的偏移量。现在,当您启动您的第二个消费者时,因为它在同一个消费者组中,所以它将从上次提交的偏移量读取消息。

您的消费者将消费的消息取决于它所属的ConsumerGroup。假设您在单个消费者组中有2个分区和2个消费者,那么每个消费者将从不同的分区读取数据,这有助于实现并行性。

因此,如果你想让你的第二个消费者从头开始阅读,你可以做以下两件事之一:

a)尝试将第二个消费者放在不同的消费者组中。对于这个消费者组,将不会有任何偏移量存储在任何地方。此时,auto.offset.reset配置将决定起始偏移量。将auto.offset.reset设置为earliest(将偏移重置为最早的偏移)或latest(将偏移重置为最新的偏移)。

b)通过使用以下命令来查找分配给你的使用者的所有分区的开始:consumer.seekToBeginning(consumer.assignment())

文档:https://kafka.apache.org/11/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#seekToBeginning-java.util.Collection-

https://kafka.apache.org/documentation/#consumerconfigs

票数 1
EN

Stack Overflow用户

发布于 2019-02-10 02:32:13

分区始终分配给单个消费者组中的唯一消费者,而与多个消费者无关。这意味着只有消费者可以读取数据,而其他用户在将分区分配给他们之前不会使用数据。当消费者宕机时,分区重新平衡发生,它将被分配给另一个消费者。由于您正在执行手动提交,因此新的使用者将开始从提交的偏移量读取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54603341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档