keymap的key可以为null吗时Kafka会将消息发送给哪个分区

kafka producer 发送消息的时候可以指定 key,这個 key 的作用是为消息选择存储分区

  • 当指定 key 且不为空的时候kafka 是根据 key 的 hash 值与分区数取模来决定数据存储到那个分区

  • 当 key=null 时,kafka 是先从缓存中取分区號然后判断缓存的值是否为空,如果不为空就将消息存到这个分区,否则重新计算要存储的分区并将分区号缓存起来,供下次使用

  • 嘚消息都会往缓存起来的这个分区存储当时缓存过时之后,就会重新计算分区号将计算结果缓存起来。也就是说在keymap的key可以为null吗的情况丅Kafka并不是每条消息都随机选择一Partition;而是每隔 topic.metadata.refresh.interval.ms 才会随机选择一次!

我要回帖

更多关于 map的key可以为null吗 的文章

 

随机推荐