【问题标题】:One partition multiple consumers same group, consumer IDs一分区多个消费者同组,消费者ID
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-06-10
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2011-06-04
    • 2017-01-04
    • 1970-01-01
    相关资源
    最近更新 更多