
Kafka
生产者——向
Kafka
写入数据
|
45
3.6
分区
在之前的例子里,ProducerRecord 对象包含了目标主题、键和值。
Kafka
的消息是一个个
键值对,ProducerRecord 对象可以只包含目标主题和值,键可以设置为默认的 null,不
过大多数应用程序会用到键。键有两个用途:可以作为消息的附加信息,也可以用来
决定消息该被写到主题的哪个分区。拥有相同键的消息将被写到同一个分区。也就是
说,如果一个进程只从一个主题的分区读取数据(第
4
章会介绍更多细节),那么具有相
同键的所有记录都会被该进程读取。要创建一个包含键值的记录,只需像下面这样创建
ProducerRecord 对象:
ProducerRecord<String, String> record =
new ProducerRecord<>("CustomerCountry", "Laboratory Equipment", "USA");
如果要创建键为
null
的消息,不指定键就可以了:
ProducerRecord<String, String> record =
new ProducerRecord<>("CustomerCountry", "USA");
➊
➊
这里的键被设为 null。
如果键值为
null
,并且使用了默认的分区器,那么记录将被随机地发送到主题内各个可用
的分区上。分区器使用轮询(
Round Robin
)算法将消息均衡地分布到各个分区上。
如果键不为空,并且使用了默认的分区器,那么
Kafka ...