如何在 Kafka 中制作子主题
how to make sub-topics in Kafka
我试图在 Kafka 中表示 主题 和 子主题。
示例:主题 'Sports' 子主题 'Football'、'Handball'
据我所知,Kafka 不支持这一点。我现在使用的是这样的主题 'Sports_Football' , 'Sports_Handball'...
这不是真正的功能,因为当我们需要时,当我们想要带有所有子项的主题 'Sports' 时,我们需要查询它的所有主题。
我们还使用 Redis 和 Apache Storm。那么请问有更好的方法吗?
你是对的。在 Kafka 中没有 "subtopic" 这样的东西,但是,消费所有以单词 'Sports' 开头的主题是微不足道的。假设你正在使用 Java,一旦你初始化了一个消费者,使用方法 consumer.subscribe(Pattern.compile("^Sports_.+"))
订阅你的 "subtopics." 调用 consumer.poll(timeout)
现在将从所有以 [= 开头的主题读取19=].
这样做的唯一缺点是,当添加新的 'Sports_' 主题时,消费者将不得不重新订阅。
Apache Kafka 不支持,你是对的。但是 Kafka 支持消息分区。 Kafka 提供保证,所有具有相同密钥的消息都将发送到同一分区。
您可以使用所有分区,也可以只使用一个。所以你基本上可以为每项运动设置不同的键来分隔消息。
还有使用 Redis 流的选项,
使用 kafka-redis-connector 可以将数据推送到 Redis 流。
但请考虑 Redis 流的好处和不便。
另一个有趣的解决方案是使用 Kafka Streams,因此您可以创建子主题。
Broker(Sport) ==> Sport_Stream(Football, Handball) ==> Consumer 可以从 Broker 接收主题或从 Stream 接收子主题。
我试图在 Kafka 中表示 主题 和 子主题。 示例:主题 'Sports' 子主题 'Football'、'Handball'
据我所知,Kafka 不支持这一点。我现在使用的是这样的主题 'Sports_Football' , 'Sports_Handball'... 这不是真正的功能,因为当我们需要时,当我们想要带有所有子项的主题 'Sports' 时,我们需要查询它的所有主题。
我们还使用 Redis 和 Apache Storm。那么请问有更好的方法吗?
你是对的。在 Kafka 中没有 "subtopic" 这样的东西,但是,消费所有以单词 'Sports' 开头的主题是微不足道的。假设你正在使用 Java,一旦你初始化了一个消费者,使用方法 consumer.subscribe(Pattern.compile("^Sports_.+"))
订阅你的 "subtopics." 调用 consumer.poll(timeout)
现在将从所有以 [= 开头的主题读取19=].
这样做的唯一缺点是,当添加新的 'Sports_' 主题时,消费者将不得不重新订阅。
Apache Kafka 不支持,你是对的。但是 Kafka 支持消息分区。 Kafka 提供保证,所有具有相同密钥的消息都将发送到同一分区。
您可以使用所有分区,也可以只使用一个。所以你基本上可以为每项运动设置不同的键来分隔消息。
还有使用 Redis 流的选项, 使用 kafka-redis-connector 可以将数据推送到 Redis 流。 但请考虑 Redis 流的好处和不便。
另一个有趣的解决方案是使用 Kafka Streams,因此您可以创建子主题。 Broker(Sport) ==> Sport_Stream(Football, Handball) ==> Consumer 可以从 Broker 接收主题或从 Stream 接收子主题。