如何从 kafka 主题按键获取消息

2022-09-03 06:19:02

我尝试通过密钥从kafka获取消息。我发现唯一的一个解决方案是使用StateStore,但我认为这可能不是一个好主意。如何从kafka主题按键获取消息?使用 StateStore 进行此操作是一个好主意吗?


答案 1

写入Kafka的每条记录都可以选择有一个密钥(但不必!),可以通过多种方式访问密钥:

控制台使用者:

$ kafka-console-consumer --bootstrap-server <servername>:9092 --topic topicname --from-beginning --property print.key=true --property key.separator=:

kafkacat

$ kafkacat -b <servername>:9092 -C -t topicname -o beginning -K :

Java Consumer API

ConsumerRecord#key()

Kafka不是按键索引的,而是按偏移量编制索引的,也可以按时间戳编制索引。如果需要查找键,则需要将数据具体化到设计为按键查找的系统:关系数据库、键值存储或某些索引。您可以使用Kafka Connect轻松完成此操作,或者如果您想将其构建到您的服务中,则可以使用Kafka Streams的交互式查询功能


答案 2

你不能“通过密钥从卡夫卡获取消息”。

如果可行,一种解决方案是将分区数与键一样多,并始终将键的消息路由到同一分区。


推荐