2017-06-23 5 views
0

カフカ消費者ポップapiが低タイムアウトに記録を戻していません。 ポーリングでタイムアウト値を大きくすると、レコードが送信されます。 私はこの論理を理解することができません。次のコード、助けてください:ポーリングするタイムアウト(時間切れ)として指定された期間に発表された新しい消費されていないメッセージがない場合Kafkaコスプレマザーポールが低タイムアウトの記録を返さない

public ConsumerRecords<String, Map<String, String>> subscribeToQueue(String topic, QueueListener q) { 
    Properties props = new Properties(); 
    props.put("bootstrap.servers", "localhost:9092"); 
    props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); 
    props.put("value.deserializer", "com.intuit.eventcollection.queue.KafkaJsonDeserializer"); 
    props.put("group.id", "test"); 
    props.put("enable.auto.commit", "true"); 
    props.put("auto.commit.interval.ms", "1000"); 
    props.put("session.timeout.ms", "30000"); 
    props.put("auto.offset.reset", "earliest"); 

    // Figure out where to start processing messages from 
    KafkaConsumer<String, Map<String, String>> kafkaConsumer = new KafkaConsumer<String, Map<String, String>>(
      props); 
    kafkaConsumer.subscribe(Arrays.asList(topic)); 
    ConsumerRecords<String, Map<String, String>> records = null; 
    // Start processing messages 
    try { 
     records = kafkaConsumer.poll(100); 

答えて

0

投票は、何も返さないでしょう。

+0

タイムアウトの定義は次のように表示されます。 - timeout - データが利用できない場合にポーリングを待機する時間(ミリ秒単位)。 0の場合は、すぐに利用可能なレコードをすぐに返します。負であってはいけません。テスト中は、トピックと同じフローでデータを連続的に送信していますが、タイムアウトを100としてメッセージを消費しようとしていますが、トピックからは何も返されません。しかし、タイムアウトを200に増やすと、トピックからメッセージが出てきます。あなたの返信として、 "期間中に新しい未使用のメッセージは公開されていません"というように、テスト中は理解できません。 – vidya

関連する問題