消费者群体可以记住它所订阅的所有主题

时间:2016-02-16 02:49:48

标签: apache-kafka kafka-consumer-api

我是Kafka的新手,我正在尝试制作多种产品订阅功能。 让我们说有N个生产商叫P1,P2,P3 ......和M个消费者C1,C2,C3

现在C1需要订阅P1,P2,并且在某些时候他还需要订阅P3。因此,C1有一个动态的主题列表,需要订阅。

我希望这可以通过高级消费者来实现,我们可以在其中列出消费者群体,Kafka将存储偏移量直到我们阅读。但后来我注意到的是,我们还需要在创建高级消费者时给出主题名称。在我的情况下,我需要订阅1000个主题,这个列表是动态更新的。

有没有办法,kafka高级消费者可以记住他们订阅的主题,并在提出时听取他们的意见,而不是我们提供过去订阅的所有主题的名称。

1 个答案:

答案 0 :(得分:1)

我认为您概述的Kafka架构不会起作用。鉴于Kafka主题是生产者和消费者之间的异步,主要问题是你不能用你需要订阅的“动态主题列表”(如你所说的那样)做一个干净的切换,因为一些金额消息可能总是在“队列”中。

除此之外,动态更改消费者客户端中的主题(和分区)并不是一件容易的事。 AFAIK Kafka并不打算以这种方式使用。

更好的选择是使用特殊的消息字段,告诉您的消费者客户端消息是否适合他们。 因此,您可以将专用主题用于不需要此动态特性的消息(为了避免对所有消息进行此检查,如果可能)和单独的主题,其中您将混合所有需要它的消息。