【发布时间】:2018-01-16 15:10:27
【问题描述】:
我正在尝试了解 Kafka 的工作原理。我已经读过,默认情况下,Kafka 将在分区之间以循环方式分发来自生产者的消息。
但是,如果消息具有相同的键,为什么消息总是放在同一个分区中? (未配置分区键策略)。
例如,使用下面的代码,消息总是放在同一个分区中:
KafkaProducer<String, String> producer = new KafkaProducer<>(properties);
String key = properties.getProperty("dev.id");
producer.send(new ProducerRecord<String, String>(properties.getProperty("kafka.topic"), key, value), new EventGeneratorCallback(key));
使用不同的密钥,消息以循环方式分发:
KafkaProducer<String, String> producer = new KafkaProducer<>(properties);
String key = properties.getProperty("dev.id") + UUID.randomUUID().toString();
producer.send(new ProducerRecord<String, String>(properties.getProperty("kafka.topic"), key, value), new EventGeneratorCallback(key));
【问题讨论】:
标签: apache-kafka kafka-producer-api