【发布时间】:2017-06-22 13:44:50
【问题描述】:
假设我有消费者组 G1,它有三个消费者 C1、C2 和 C3。所有人都订阅了具有单个分区的主题 1。现在 Producer 在 partition1、broker 上产生 3 条消息 将向每个消费者移交 1 条消息。 对吗?
但我在阅读下面Workflow of Queue Messaging / Consumer Group部分的粗体文字后感到困惑
在kafka tutorial
- 单个消费者订阅特定主题,假设“Topic-01”和“Group ID”为 “第 1 组”。
- Kafka 以与 Pub-Sub 消息传递相同的方式与消费者交互,直到新的 消费者订阅了相同的主题“Topic-01”,其“Group ID”与“Group-1”相同。
- 一旦新的消费者到达,Kafka 将其操作切换到共享模式并共享 两个消费者之间的数据。 本次分享将持续到消费者人数 达到为该特定主题配置的分区数。
- 一旦消费者数量超过分区数量,新消费者将 在任何现有消费者取消订阅之前,不会收到任何进一步的消息。 出现这种情况是因为 Kafka 中的每个消费者将至少分配一个 分区,一旦所有分区都分配给现有的消费者,新的 消费者将不得不等待。
如果我经过 3/4 点,只有消费者 1 会收到所有消息,因为消费者数量(即 3)大于分区数量(即 1)?这是否意味着我需要总共创建 3 个分区,并且 G1 组将订阅所有 3 个分区,以便每个消费者每个收到一条消息?
【问题讨论】:
标签: java apache-kafka