apache-kafka - Kafka如何为key选择分区?

标签 apache-kafka

假设某个主题的分区数量是固定的。假设我在发布消息时提供了一个 key ——一个字节数组。 Kafka 会将键映射到主题分区 0,1,2,3,...N-1。

我想创建一个执行相同操作的函数:给定 N,并且键返回与 Kafka 相同的分区号。

这只是(伪代码) murmur3(key) % N 吗?

TIA

最佳答案

DefaultPartitioner 使用 murmur3 函数计算非空键消息的分区。

您可以提取算法并将其添加到您的代码中:

import org.apache.kafka.common.utils.Utils;
Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;

第二个选项是仅使用DefaultPartitioner:

DefaultPartitioner partitioner = new DefaultPartitioner();
int partition = partitioner.partition(???, ???, ???, ???, ???, ???);

关于apache-kafka - Kafka如何为key选择分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55841398/

相关文章:

c++ - 如何在 librdkafka 中使用 "group.id"? (卡夫卡版本是 "0.8.2.2")

apache-kafka - Kafka Streaming 应用程序在与 Kafka 连接后仅读取最新消息

java - 卡夫卡经纪人在一段时间后失败了

apache-kafka - Apache Kafka 2.12-1.1.0 不适用于 JDK -10.0.1

java - Kafka生产者拦截器

java - 调用 deleteRecords Kafka 管理客户端 Java API 时,消息不会从文件系统中删除

apache-storm - 在 Storm Spout 中,命名消费者组

java - 使用 Java API 定期获取 Kafka Producer 指标

json - 我是否需要自定义序列化程序来在 kafka 中生成 JSON 消息?

java - 这种聚合在 Kafka 流中如何工作?