Apache Kafka 如何向多个消费者组发送消息?

How can Apache Kafka send messages to multiple consumer groups?

Kafka documentation中:

Kafka handles this differently. Our topic is divided into a set of totally ordered partitions, each of which is consumed by one consumer at any given time. This means that the position of consumer in each partition is just a single integer, the offset of the next message to consume. This makes the state about what has been consumed very small, just one number for each partition. This state can be periodically checkpointed. This makes the equivalent of message acknowledgements very cheap.

然而,按照他们在同一文档中的快速入门指南,我很容易能够:

  1. 创建具有单个分区的主题
  2. 启动控制台制作人
  3. 推送几条消息
  4. 启动消费者消费--from-beginning
  5. 开始另一个消费者--from-beginning

并且让两个消费者都成功地从同一个分区消费。

但这似乎与上面的文档不一致?

当使用不同的消费组时,消费者可以轻松消费相同的分区。您可以将组 ID 视为使用 Kafka 主题的不同应用程序。多个不同的应用程序可能希望以不同方式使用 Kafka 主题中的数据,从而不与其他应用程序发生冲突。这就是为什么两个消费者可以消费一个分区(实际上是两个消费者可以消费一个分区的唯一方式)。

当你启动一个控制台消费者时,它会随机生成一个组 ID (link),因此这些消费者正在做我刚刚写的。