Apache kafka Kafka-带MessageKey的DefaultPartitioner与自定义分区器之间的区别?

Apache kafka Kafka-带MessageKey的DefaultPartitioner与自定义分区器之间的区别?,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,我正在尝试使用ProducerRecord将此消息发送给KafkaProducer 这将使用DefaultPartitioner,DefaultPartitioner将使用密钥的哈希来确保同一密钥的所有消息都转到同一分区 这与使用CustomPartitioner有什么区别?我希望自定义分区器也可以根据键将消息发送到同一分区。默认分区策略是 如果在记录中指定了分区,请使用它 如果未指定分区但存在密钥,请根据密钥的哈希值选择一个分区 如果没有分区或键,则以循环方式选择分区 这是从DefaultPa

我正在尝试使用ProducerRecord将此消息发送给KafkaProducer

这将使用DefaultPartitioner,DefaultPartitioner将使用密钥的哈希来确保同一密钥的所有消息都转到同一分区


这与使用CustomPartitioner有什么区别?我希望自定义分区器也可以根据键将消息发送到同一分区。

默认分区策略是

如果在记录中指定了分区,请使用它 如果未指定分区但存在密钥,请根据密钥的哈希值选择一个分区 如果没有分区或键,则以循环方式选择分区 这是从DefaultPartitioner源代码中提取的


自定义分区器只允许您设置自己的策略。例如,您可以随机分配分区,或者如果您事先知道分区将有多大,那么您可以基于此分配分区。DefaultPartitioner的默认部分更多地涉及循环策略。我想在大多数/所有情况下,选项1和2都会被视为标准

默认的分区策略是

如果在记录中指定了分区,请使用它 如果未指定分区但存在密钥,请根据密钥的哈希值选择一个分区 如果没有分区或键,则以循环方式选择分区 这是从DefaultPartitioner源代码中提取的

自定义分区器只允许您设置自己的策略。例如,您可以随机分配分区,或者如果您事先知道分区将有多大,那么您可以基于此分配分区。DefaultPartitioner的默认部分更多地涉及循环策略。我想在大多数/所有情况下,选项1和2都会被视为标准

new ProducerRecord(topicName,messageKey,message)