java kafka通过唯一键获取分区中的消息偏移量

时间:2019-05-21 14:54:06

标签: java apache-kafka kafka-consumer-api apache-kafka-streams

如果我所有的kafka消息都包含一个唯一密钥,那么最快的方式将如何查询消息的偏移量及其代理中的分区内的唯一密钥?假设我已经知道此消息必须存在于此代理和此分区中。

例如,我可以考虑的一种方法是重新处理分区中的所有消息,然后停止直到找到特定的键。但是,如果您有超过一百万条消息,则处理每个消息实际上是在浪费时间。

换句话说,是否有任何kafka API可以直接在Kafka服务器上执行此检查?

2 个答案:

答案 0 :(得分:0)

Kafka的工作方式与您猜测的一样,它顺序读取消息。您不能直接进入某些记录。但是,为了节省时间,您可以为该主题创建多个分区,然后通过按键知道什么是分区(必须用谷歌搜索如何获取分区号),然后才从该分区中使用。假设如果您在某个主题中有1 000 000条记录,那么如果您进行100个分区,则只需扫描10 000条记录并找到您的记录。

答案 1 :(得分:0)

我建议使用Kafka Streams

使用KStream。transform()并通过ProcessorContext获得对消息偏移量的访问。然后在结果顶部构建KTable或使用Interactive Queries