如果我不提任何,kafka如何决定分区

Rak*_*odi 6 java apache-kafka kafka-producer-api

这就是我产生消息的方式:

String json = gson.toJson(msg);

ProducerRecord<String, String> record = new ProducerRecord<>(kafkaProducerConfig.getTopic(), json);
long startTime = System.currentTimeMillis();

try {
    RecordMetadata meta = producer.send(record).get(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
    e.printStackTrace();
} catch (ExecutionException e) {
    e.printStackTrace();
} catch (TimeoutException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

我有15这个主题的分区,我在制作时没有提到分区键,默认分配的分区是什么?

cri*_*007 8

由于您没有将密钥作为记录的一部分发送,因此它为空。

Kafka 有一个 DefaultPartitioner,它将在每个分区上循环任何空键。

对于非空键,计算 Murmur2 哈希,然后以主题的分区数为模