一个分区多个消费者同组,消费者ID

时间:2021-02-10 20:41:21

标签: spring spring-boot apache-kafka kafka-consumer-api spring-kafka

由于消息的排序要求,我们有一个主题和一个分区。我们有两个消费者运行在具有相同配置集的不同服务器上,即 groupId、consumerId、consumerGroup。即

1 个主题 -> 1 个分区 -> 2 个消费者

当我们部署消费者时,会在两台服务器上部署相同的代码。注意到当一条消息到来时,我们看到两个消费者都在消费消息,而不仅仅是一个处理。让消费者在两台独立服务器上运行的原因是,如果一台服务器崩溃,至少另一台可以继续处理消息。但看起来如果两者都消耗消息。阅读 Kafka 文档,它说如果我们的消费者多于分区,那么一些保持空闲的人不会看到这种情况发生。除了consumerId和groupId之外,我们在配置方面缺少的任何东西。谢谢

1 个答案:

答案 0 :(得分:0)

正如@Gary Russel 所说,只要两个消费者实例有自己的消费者组,他们就会消费每一个写入主题的事件。只需将它们放入同一个消费者组即可。您可以在 consumer.properties 中提供消费者组 ID。