2016-10-05 20 views
1

にメッセージを送信しようとしています。ProducerRecordを使用しています。Kafka - DefaultPartitionerとMessageKeyの違いとカスタムパーティショナーの違い

new ProducerRecord(topicName,messageKey,message) 

これはDefaultPartitionerを使用して、DefaultPartitionerは同じキーのすべてのメッセージが同じパーティションに行くことを保証するために、キーのハッシュを使用します。

CustomPartitionerとの違いは何ですか?私は、Custom PartitionerがKeyに基づいて同じパーティションにメッセージを送信するのにも使えたと思っています。

答えて

3

パーティションがレコードに指定されている場合は、デフォルトのパーティショニング戦略は

  1. で、何のパーティションが指定されていないが、キーは、キー
  2. のハッシュに基づいてパーティションを選択します存在している場合
  3. それを使用
  4. ないパーティションまたは鍵が存在しない場合には(これはDefaultPartitionerソースコードから引き出される)

ラウンドロビン方式でパーティションを選択

カスタムパーティショナーを使用するだけで、独自の戦略を設定できます。たとえば、パーティションをランダムに割り当てることもできます。あるいは、パーティションにどれくらいの大きさが割り当てられているかを事前に知っていてもかまいません。 DefaultPartitionerのデフォルト部分はラウンドロビン戦略の詳細です。私はほとんどの/すべての状況でオプション1と2が標準と見なされると思います。

関連する問題