【问题标题】:Can consumer group remember which all topics it is subscribed to消费者组能否记住它订阅的所有主题
【发布时间】:2016-02-17 01:36:20
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: apache-kafka kafka-consumer-api


    【解决方案1】:

    我认为您概述的 Kafka 架构行不通。考虑到 Kafka 主题是生产者和消费者之间的异步点,主要问题是你不能用你的“你需要订阅的主题的动态列表”(正如你所说的那样)做一个干净的切换,因为有一些的消息大概总是在“队列”中。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多