如果我的所有kafka消息都包含一个唯一密钥,那么在代理程序的分区中用唯一密钥查询消息的偏移量的最快方法是什么?假设我已经知道这个消息必须存在于这个代理和这个分区中。
例如,我可以考虑的一种方法是重新处理分区内的所有消息,然后停止,直到找到特定的键为止。但是如果你有超过一百万条信息,处理每一条都是浪费时间。
换句话说,有没有kafkaapi可以直接在kafka服务器上执行此检查?
如果我的所有kafka消息都包含一个唯一密钥,那么在代理程序的分区中用唯一密钥查询消息的偏移量的最快方法是什么?假设我已经知道这个消息必须存在于这个代理和这个分区中。
例如,我可以考虑的一种方法是重新处理分区内的所有消息,然后停止,直到找到特定的键为止。但是如果你有超过一百万条信息,处理每一条都是浪费时间。
换句话说,有没有kafkaapi可以直接在kafka服务器上执行此检查?
2条答案
按热度按时间koaltpgm1#
我建议使用Kafka流:
使用kstream.transform()并通过processorcontext访问消息偏移量。然后在结果之上构建ktable或使用交互式查询。
nwnhqdif2#
Kafka的工作原理和你想象的一样,它按顺序阅读信息。你不能直接去一些记录。但是你能做的是为这个主题创建许多分区,然后通过有一个键你知道什么是分区(你必须用google搜索它如何获得分区号),然后你只使用这个分区。所以说如果你有
1 000 000
在一个主题中记录,然后如果100
分区,只需扫描10 000
记录并找到你的。