本文旨在瞭解 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 的信息 閱讀全文 >>分佈式