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

JKn*_*ght 5 apache-kafka

卡夫卡文档中:

卡夫卡对此的处理方式有所不同。我们的主题分为一组完全排序的分区,每个分区在任何给定时间都由一个消费者消费。这意味着消费者在每个分区中的位置只是一个整数,即下一条要消费的消息的偏移量。这使得有关已消耗内容的状态非常小,每个分区只有一个数字。可以定期检查此状态。这使得消息确认的成本非常低。

然而,按照同一文档中的快速入门指南,我可以轻松地:

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

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

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

ser*_*jja 7

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

当您启动控制台消费者时,它会随机为其生成一个组 ID(链接),因此这些消费者正在执行我刚刚编写的操作。