Kafka独立消费者

Kafka independent consumers

我是 Kafka 的新手,正在尝试验证我的设计。下面是我的。

我有一个生产者发布到一个主题,并且有一堆容器(部署了我的网络应用程序),每个容器上都有一个消费者 运行。这些消费者不在消费者组中,独立消费消息。每个消费者都应该阅读主题中的所有消息。 例如假设在主题上有 3 条消息 - m0、m1、m2 那么 consumer1 到 consumerN 应该独立阅读 m0、m1、m2。 每个消费者在处理读取的消息后立即提交偏移量。每当重新部署我的 Web 应用程序时,所有消费者都会关闭并重新启动。他们应该从上次提交的偏移量开始读取。

对于这个设置,正如我所说,我所有的消费者都不在任何消费者组中,我想这应该让他们独立阅读消息,请确认这是正确的吗?这个设计有什么缺陷吗?

根据您自己的声明,即每个消费者都应使用所有消息,您的设计在我看来很合理。由于 Kafka 维护每个消费者的偏移量提交 group/topic/partition,您的每个消费者都可以自由地独立处理和提交偏移量。

看看这个link了解Kafka的基本架构。

您还可以探索由 Kafka 创建的名为 __consumer_offsets 的特殊内部主题,其中存储了每个消费者组 ID 的偏移量。

实际上,消费者是否能够在重新启动后阅读其中断的地方还取决于主题的保留期。如果停机时间超过保留期,可能会丢失消息

你的设计只是遗漏了一个小东西,你的每个容器都必须定义一个不同的(kafka)消费者组并在重启时重用它。否则,每次启动时都会为每个消费者分配一个随机组 ID,因此他们不会在关闭时离开的地方继续消费。