2017-10-05 10 views
0

Kafkaにレコードを作成する前に、パーティションサイズを確認します。カフカのパーティションまたはトピックのサイズを確認する方法は?

私のメッセージがドロップされるはずの正確なパーティション番号を与えるカスタムパーティションクラスがあります。

私の要件は、私のレコードを送る前にパーティションのサイズをチェックしたいのです。

List<String> users = userService.findAllUsers(); 
      for (String user : users) { 
      String msg = "Hello " + user; 
      //Check size here 
      producer.send(new ProducerRecord<String, String>(topic, user, msg), new Callback() { 
        public void onCompletion(RecordMetadata metadata, Exception e) { 
         if (e != null) { 
          e.printStackTrace(); 
         } 
        } 
       }); 

私はこれを達成できますか?

+0

パーティションの「サイズ」はどういう意味ですか? – Natalia

+0

サイズ別には、メッセージを保持する容量を意味します。その容量がオーバーシュートすると、メッセージを配信しません。 –

+0

@ Natalia-トピックのサイズを確認できますか? –

答えて

1

容量は純粋にカフカブローカーレベルの側面です。 基本的に、ブローカのデータディレクトリにディスク領域がある場合は、メッセージを配信できます。メッセージはブローカによって時間とパーティションのサイズに基づいてクリーンアップされます(これはブローカ構成にあります)。したがって、ブローカを適切に構成すると、古いメッセージが破棄されるだけです。それはあなたのビジネスusecaseにも合わないかもしれません。

また、あなたのコメントCan we check size of Topicに応え、あなたが実際にKafkaConsumerbeginningOffsets & endOffsets方法を使用して、パーティションの現在サイズを確認することができます。パーティションが存在しない場合(少なくとも0.10.2)、これらのメソッドがブロックされる可能性があることに注意してください。例えばトピックが実際に3つのパーティションを含むときにパーティション4のデータを要求するとき

Kafka 0.11では、クライアントで管理機能が導入されていますが、まだ進行中です。

関連する問題