如何在代码中计算Kafka将向哪个分区发送(并向更早发送)向其发送消息的分区?

时间:2019-05-24 15:04:22

标签: apache-kafka kafka-producer-api

使用主题和味精键,Kafka根据以下内容分配主题分区:

         ... Utils.Murmur2(bytes) % numPartitions ....

现在,找到murmur2代码非常简单。但是,murmur2需要一个可以改变运行的种子。

我的问题:例如字节序列,如何计算具有相同密钥字节的Kafka 将向哪个分区发送消息?假设分区一致。

有了此信息,我可以在应用程序启动时将一些信息预先缓存在不同的分区侦听器中。

1 个答案:

答案 0 :(得分:0)

Kafka中的种子是一致的。您可以在源代码中找到它

https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L394

因此,Utils.toPositive(Utils.murmur2(bytes)) % numPartitions将是您所需要的全部