【发布时间】:2021-05-14 14:25:22
【问题描述】:
由于消息要求的排序,我们有一个主题和一个分区。我们有两个消费者在不同的服务器上运行,具有相同的配置集,即 groupId、consumerId、consumerGroup。即
1 个主题 -> 1 个分区 -> 2 个消费者
当我们部署消费者时,两台服务器上都部署了相同的代码。注意到当消息到来时,我们看到两个消费者都在消费消息,而不是只处理一个。让消费者在两台单独的服务器上运行的原因是,如果一台服务器崩溃,至少另一台服务器可以继续处理消息。但看起来如果两者都在消费消息。阅读 Kafka 文档,它说如果我们的消费者比分区多,那么一些闲置的人就不会看到这种情况发生。除了 consumerId 和 groupId 之外,我们在配置方面缺少的任何东西。谢谢
【问题讨论】:
-
有机会看到有关此事的一些配置和来自两个消费者实例的一些日志,以确认我们遇到了您描述的问题。就我们使用同一个消费者组而言,只有一个实例应该消费——其余的都保持空闲状态。
-
它们要么有不同的
group.ids,要么你必须手动分配分区,而不是让 Kafka 使用组管理来分配它。
标签: spring spring-boot apache-kafka kafka-consumer-api spring-kafka