本文旨在了解 Kafka 发送消息到有多个 Partition 的 Topic 时如何选择 Partition。或许多数人已经知道 Kafka 默认(当 key 为 null) 时采用 Round-robin 策略,也就是雨露均沾,风水轮流转,实现类是 DefaultPartitioner。但咱们实际应用中为保持相关消息按序到,就必须送到指定的 Partition,方法能够有java
还应考究当指定了 Key 或 Partition 编号发送消息后,后续消息 key 为 null 会选用哪一个 Partition。最后再思考一个问题,Consumer 每次 poll 时是得到的消息列表是否只包含一个 Partition 源仍是能够多个 Partiton 源。git
为完成本次实验,能够本地搭建一个 Kafka 环境,参考 简单搭建 Apache Kafka 分布式消息系统。待 Zookeeper 和 Kafka 正常启动后,咱们用下面的命令建立一个 Partition 数量为 3 的 Topic partition-test
github
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic partition-testapache
验证一下该 Topic 的信息 阅读全文 >>分布式