Kafka以不同的方式处理这个问题。我们的主题分为一组 完全有序的分区,每个分区由一个消费者使用 在任何给定的时间。这意味着每个消费者的位置 partition只是一个整数,即下一条消息的偏移量 消耗。这使得状态消耗非常小, 每个分区只有一个数字。这种状态可以定期 检查点。这相当于消息确认 非常便宜。
然而,按照同一份文件中的快速入门指南,我很容易就能够:
--from-beginning
--from-beginning
让两个消费者成功使用同一个分区。
但这似乎与上面的文档不一致?
答案 0 :(得分:4)
使用不同的消费者群体时,消费者可以轻松使用相同的分区。您可以将组ID视为使用Kafka主题的不同应用程序。多个不同的应用程序可能希望以不同方式使用Kafka主题中的数据,从而不会与其他应用程序冲突。这就是为什么两个消费者可能会消耗一个分区的原因(事实上,这是两个消费者如何消费一个分区的唯一方式)。
当你启动一个控制台消费者时,它随机为它生成一个组ID(link),因此这些消费者正在做我刚写的内容。