2017-10-06 18 views
1

私はカフカで新しく、私は解決できないという質問があります。カフカのプロデューサーは非常に遅い

私はKafkaとZookeeperをWindows(Linuxではなく)の自分のコンピュータにインストールしました。いくつかのパーティション(6と12のパーティション間で再生)を持つブローカーを作成しました。

コンシューマーを作成すると、完璧に動作して読みやすくなりますが、プロデューサーを参照して、多くのWebサイトで見ることができるシンプルなプロデューサーを作成しました。プロデューサーはループ内にあり、多くの短いメッセージ(約2,000の非常に短いメッセージ)を送信しています。

消費者は2000年のメッセージを非常にうっかり読んでいるのがわかりますが、プロデューサーは1日あたり140または150メッセージでブローカにメッセージを送信します。前にも述べたように、私は自分のラップトップ(1台のディスク)で作業していますが、毎秒何百万ものメッセージを読むと、私は忘れたものがあると思います。

私が多くのプロデューサを使用すると、結果は悪化します。

同じノード内の他のブローカーやそれに類する質問がありますか?私の仕事ではこの問題が私に課されました。私はより良いコンピュータの可能性を持っていません。

プロデューサーを作成するためのコードが

public class Producer { 

    public void publica(String topic, String strKey, String strValue) { 
     Properties configProperties = new Properties(); 
     configProperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); 
     configProperties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, LongSerializer.class.getName()); 
     configProperties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); 

     KafkaProducer<String, String> producer = new KafkaProducer<String, String>(configProperties); 
     ProducerRecord<String, String> rec = new ProducerRecord<String, String>(topic, strValue); 
     producer.send(rec); 
    } 
} 

で、メッセージを送信するためのコードは、(部分的)である:

Producer prod = new Producer(); 

for (int i = 0; i < 2000; i++) 
{ 
    key = String.valueOf(i); 
    prod.publica("TopicName", key, texto + " - " + key); 
    // System.out.println(i + " - " + System.currentTimeMillis()); 
} 
+0

作成に使用したコードを投稿できますか? 私はあなたが同期して生成していると仮定します。非同期で生成する必要があります。ディスクは問題ではないはずです(ディスクへのフラッシュはバックグラウンドで行われます) – Treziac

+0

はい、投稿を編集しました。ありがとうございました –

答えて

6

あなたは一度、あなたのカフカのプロデューサーを作成し、それをあなたが必要とするたびに使用することができますメッセージを送信する:

public class Producer { 
    private final KafkaProducer<String, String> producer; // initialize in constructor 

    public void publica(String topic, String strKey, String strValue) { 
     ProducerRecord<String, String> rec = new ProducerRecord<String, String>(topic, strValue); 
     producer.send(rec); 
    } 
} 

また、プロデューサとブローカの設定availab le here。アプリケーションのニーズに合わせて調整できるオプションがいくつかあります。

+0

私は54歳です。私は22歳以下だったので開発者です。時には私は初心者だと思います。私はカフカのプロデューサーが毎回作られたのであって、一度ではないことに気付かなかった。私は変更を行います... –

+0

前:2000年のmsg 15秒。後:約170ミリ秒で2000メッセージ。多くの多くのお礼ありがとうございます。 –

+0

@EnriqueLópezMoreno - ご回答いただきありがとうございます。 – alirabiee