卡夫卡独立消费者

问题描述 投票:2回答:2

我是Kafka的新手并试图验证我的设计。以下是我所拥有的。

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

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

apache-kafka kafka-consumer-api kafka-producer-api
2个回答
1
投票

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


0
投票

根据您自己的声明,您的设计看起来很合理,每个消费者都应该使用所有消息。由于Kafka维护每个使用者组/主题/分区的偏移量提交,因此您的每个消费者都可以自由地独立处理和提交偏移量。

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

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

实际上,消费者是否能够在重新启动后读取停止的位置也取决于主题的保留期。如果停机时间超过保留期,则可能会出现消息丢失

© www.soinside.com 2019 - 2024. All rights reserved.