如何在Kafka中制作子主题

Mah*_*Ali 0 redis apache-kafka apache-storm

我试图在Kafka中表示主题子主题。示例:主题“体育”子主题“足球”、“手球”

据我所知,卡夫卡不支持这一点。我现在使用的主题是“Sports_Football”“Sports_Handball”这样的主题...这并不是真正有用的,因为当我们需要时,当我们想要主题“Sports”以及所有子项时,我们需要查询它的所有主题。

我们还使用RedisApache Storm。那么请问有更好的方法吗?

kel*_*ket 6

你是对的。然而,Kafka 中不存在“子主题”这样的东西,消耗所有以“体育”一词开头的主题是微不足道的。假设您使用的是 Java,一旦初始化了消费者,就可以使用该方法consumer.subscribe(Pattern.compile("^Sports_.+"))来订阅您的“子主题”。现在,调用consumer.poll(timeout)将读取以“Sports_”开头的所有主题。

这样做的唯一缺点是,当添加新的“Sports_”主题时,消费者将不得不重新订阅。


cod*_*tsu 5

Apache Kafka 不支持它,你是对的。但Kafka支持消息分区。Kafka 提供保证,所有具有相同密钥的消息都会发送到同一个分区。

您可以使用所有分区,也可以仅使用单个分区。因此,您基本上可以为每种运动设置不同的键,以便分隔消息。