消费者组可以记住它订阅了哪些主题吗?

Can consumer group remember which all topics it is subscribed to

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

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

我希望这可以使用高级消费者来实现,我们可以在其中命名消费者组,Kafka 将存储偏移量直到我们读取。但是后来我注意到,我们还需要在创建高级消费者时提供主题名称。在我的例子中,我有大约 1000 个主题需要订阅,并且这个列表是动态更新的。

有没有一种方法,在 kafka 高级消费者中可以记住它订阅的主题并在提出时收听它们,而不是我们提供它过去订阅的所有主题的名称。

我认为您概述的 Kafka 架构行不通。考虑到 Kafka 主题是生产者和消费者之间的异步点,主要问题是你不能用你的 "dynamic list of topics you need to subscribe to" (如你所说)做一个干净的切换,因为一些消息可能总是在 "the queue".

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

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