Apache kafka 有没有办法在kafka consumer中只阅读新的(未读的)消息?

Apache kafka 有没有办法在kafka consumer中只阅读新的(未读的)消息?,apache-kafka,kafka-consumer-api,Apache Kafka,Kafka Consumer Api,在consumer中,当订阅一个主题并开始使用消息时,它会从一开始就读取消息。有没有办法只读取未读消息?这是我用来消费消息的代码 Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("group.id", "test"); props.put("enable.auto.commit", "true"); props.put("auto.

在consumer中,当订阅一个主题并开始使用消息时,它会从一开始就读取消息。有没有办法只读取未读消息?这是我用来消费消息的代码

  Properties props = new Properties();
  props.put("bootstrap.servers", "localhost:9092");
  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("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
  props.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer");

  KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);

  //Kafka Consumer subscribes list of topics here.
  consumer.subscribe(Arrays.asList(topicName));

  while (true) {
      ConsumerRecords<String, String> records = consumer.poll(100);
      for (ConsumerRecord<String, String> record : records)
        System.out.printf("offset = %d, key = %s, value= %s\n", record.offset(), record.key(), record.value());

  }
Properties=newproperties();
put(“bootstrap.servers”,“localhost:9092”);
props.put(“group.id”、“test”);
props.put(“enable.auto.commit”、“true”);
props.put(“auto.commit.interval.ms”,“1000”);
props.put(“session.timeout.ms”,“30000”);
put(“key.deserializer”、“org.apache.kafka.common.serialization.StringDeserializer”);
put(“value.deserializer”、“org.apache.kafka.common.serialization.StringDeserializer”);
卡夫卡消费者=新卡夫卡消费者(道具);
//卡夫卡消费者在此订阅主题列表。
consumer.subscribe(Arrays.asList(topicName));
while(true){
ConsumerRecords记录=consumer.poll(100);
对于(消费者记录:记录)
System.out.printf(“偏移量=%d,键=%s,值=%s\n”,record.offset(),record.key(),record.value());
}

我尝试了你的代码,它只读取未读邮件。您的客户端版本和服务器版本是什么?

关闭auto.commit,并在应用程序成功读取后手动提交每个邮件偏移量。这样,如果应用程序崩溃,它将在最后提交的偏移量处重新启动