2016-05-24 19 views
5

私は自分のWindows PCに小さなテスト環境を構築し、kafka(kafka_2.10:org.apache.kafkaの0.9.0.1を使用)をテストするための次のコードを書きました。KafkaProducerがキューにメッセージを正常に送信していません

package iii.functiontesting; 

import java.text.ParseException; 
import java.util.Properties; 

import org.apache.kafka.clients.producer.KafkaProducer; 
import org.apache.kafka.clients.producer.ProducerRecord; 


/** 
* Hello world! 
* 
*/ 
public class test4 
{ 
    public static void main(String[] args) throws ParseException 
    { 
     Properties producerProps=new Properties(); 
     producerProps.put("bootstrap.servers", "localhost:9092"); 
     producerProps.put("serializer.class",org.apache.kafka.common.serialization.StringSerializer.class.getName()); 
     producerProps.put("key.serializer",org.apache.kafka.common.serialization.StringSerializer.class.getName()); 
     producerProps.put("value.serializer",org.apache.kafka.common.serialization.StringSerializer.class.getName()); 
     producerProps.put("request.required.acks","1"); 
     KafkaProducer<String,String> kafkawriter= new KafkaProducer<String,String>(producerProps); 
     ProducerRecord<String,String> msg=new ProducerRecord<>("TEST3","ImKey","teststring1"); 
     kafkawriter.send(msg); 
    } 
} 

は、私は、メッセージが正しくキューに書き込まれているかどうかを確認するには、次のコマンドを使用し

D:\作業\ kafkaenv \ kafka_2.10-0.9.0.1ビンの\ WINDOWS \> \カフカ-コンソールconsumer.bat --zookeeperはlocalhost:2181 --topic TEST3

--from-開始しかし、私はカフカ-コンソール消費者が何を示していないことがわかりました。

私はカフカサーバーが正しく動作しないと疑っています。そのため、コンソールプロデューサーを使ってテストします。

D:\作業\ kafkaenv \ kafka_2.10-0.9.0.1 \ビン\ウィンドウ> \カフカ-コンソールproducer.bat --brokerリストはlocalhost:9092 --topic TEST3

aaaaa

今回は、コンソールのコンシューマーの下にはっきりと表示されていることがわかります。 何が起こるかわかりません。 誰でも助けてくれますか?

答えて

7

プログラムを終了する前にKafkaProducer#flush [または] KafkaProducer#closeメソッドを呼び出す必要があります。

実際、プロデューサはレコードをブローカに送信する前にバッファリングします。 Kafka Producer configuration

kafkawriter.send(msg); 
kafkawriter.close(); 
+0

buffer.memorybatch.sizeを参照してください。ありがとうございました。 flush()を追加した後、メッセージが適切に送信されました。カフカの設定をもっと深く勉強する必要があると思います。ご回答有難うございます。 – greencomet

関連する問題