2017-03-10 1 views
0

私はパブ/サブアプリケーションを構築しようとしています。私はその中で最良のツールを模索しています。私は現在カフカを見ていて、少し動いているデモアプリをすでに持っています。しかし、私は概念的な問題にぶつかっています。コンシューマーが接続されていないときにKafkaブローカーがメッセージを保持できますか?

私は(ジャワコード)プロデューサを有する:

String topicName = "MyTopic; 
    String key = "MyKey"; 

    Properties props = new Properties(); 
    props.put("bootstrap.servers", "localhost:9092,localhost:9093"); 
    props.put("acks", "all"); 
    props.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer"); 
    props.put("value.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer"); 
    Producer<String, byte[]> producer = new KafkaProducer <String, byte[]>(props); 

    byte[] data = <FROM ELSEWHERE>; 
    ProducerRecord<String, byte[]> record = new ProducerRecord<String, byte[]>(topicName, key, data); 

    try { 
     RecordMetadata result = producer.send(record).get(); 
    } 
    catch (Exception e) { 
     // Nothing for now 
    } 
    producer.close(); 

IはKakfaコマンドラインツールを介して消費者開始:

kafka-console-consumer --bootstrap-server localhost:9092 --topic MyTopic 

、次いでI生産コードを実行し、I私の消費者端末に表示されるデータメッセージを参照してください。しかし

、私はがプロデューサーを実行する以前に、消費者を実行しない場合、メッセージは、「失われた」と表示されます。私が(プロデューサを実行した後に)コンシューマを起動すると、コンシューマ端末に何も表示されません。

カフカブローカーをお持ちであるかどうか知っている人は誰でものメッセージを保持していますが、コンシューマは接続されていません。もしそうなら、どうですか?

+0

問題がなくなるかどうかを確認するために '--from-beginning'を追加してみてください。デフォルトのオフセットリセット戦略が原因である可能性があります。コンシューマ設定の 'auto.offset.reset'の詳細を参照してください。 – amethystic

+0

@amethysticうん、それはそれをした!参照ありがとう。これを答えに入れて、私は受け入れます。また、他のすべての「失われた」メッセージも表示されていることを確認することは素晴らしいことです。 – Brett

+0

学習中にこれらの設定を見逃すことのない出発点は、https://kafka.apache.org/quickstartです。 – randominstanceOfLivingThing

答えて

4

コンソールコンシューマコマンドに--from-beginningを追加すると、最も早いオフセットから消費が開始されます。これは実際には、コンフィグauto.offset.resetによって制御されるオフセットリセット戦略に関するものです。ここでは、この設定が意味するものである:

オフセット電流は、サーバー上の任意のより多く存在していない場合(例えば、データが削除されているので)カフカやオフセットなし初期がないときの対処方法:

earliest:自動的早いオフセットリセットが

latestオフセット:自動的に最新にオフセットをリセット

noneオフセット:消費者にスロー例外オフセット以前のがCのために見つからない場合onsumerのグループ 他のもの:例外をコンシューマにスローします。

+0

正確に私が必要としたもの。 – Brett

関連する問題