轮询函数Java Kafka Consumer出错

轮询函数Java Kafka Consumer出错,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,这是我的消费类课程。Alaways我在poll函数“KafkaConsumer类型中的poll(long)方法不适用于参数(Duration)”和获取记录“只能迭代java.lang.Iterable的数组或实例”上出错。我正在使用JDK1.8 import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecord; import or

这是我的消费类课程。Alaways我在poll函数“KafkaConsumer类型中的poll(long)方法不适用于参数(Duration)”和获取记录“只能迭代java.lang.Iterable的数组或实例”上出错。我正在使用JDK1.8

import org.apache.kafka.clients.consumer.ConsumerConfig;  
import org.apache.kafka.clients.consumer.ConsumerRecord;  
import org.apache.kafka.clients.consumer.ConsumerRecords;  
import org.apache.kafka.clients.consumer.KafkaConsumer;  
import org.apache.kafka.common.serialization.StringDeserializer;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
  
import java.time.Duration;  
import java.util.Arrays;  
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties; 
public class KaConsumer {

    public static void main(String[] args) { 
        Logger logger= LoggerFactory.getLogger(KaConsumer.class.getName());  
        String bootstrapServers="127.0.0.1:9092";  
        String grp_id="My_App";  
        String topic="Tweet01";
        Properties properties=new Properties();  
        properties.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapServers);  
        properties.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,   StringDeserializer.class.getName());  
        properties.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,StringDeserializer.class.getName());  
        properties.setProperty(ConsumerConfig.GROUP_ID_CONFIG,grp_id);  
        properties.setProperty(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,"earliest");

      //creating consumer  
        KafkaConsumer<String,String> Consumer = new KafkaConsumer<String,String>(properties);
        Consumer.subscribe("Tweet01");

        
        while (true) {
            ConsumerRecords<Integer,String> records=Consumer.poll(Duration.ofMillis(100));  
            for(ConsumerRecord<String,String> record: records){  
            System.out.println(record);
            }
        }
      }
}
import org.apache.kafka.clients.consumer.ConsumerConfig;
导入org.apache.kafka.clients.consumer.ConsumerRecord;
导入org.apache.kafka.clients.consumer.ConsumerRecords;
导入org.apache.kafka.clients.consumer.KafkaConsumer;
导入org.apache.kafka.common.serialization.StringDeserializer;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
导入java.time.Duration;
导入java.util.array;
导入java.util.Collections;
导入java.util.HashMap;
导入java.util.Map;
导入java.util.Properties;
公共类消费者{
公共静态void main(字符串[]args){
Logger Logger=LoggerFactory.getLogger(KaConsumer.class.getName());
字符串bootstrapserver=“127.0.0.1:9092”;
字符串grp\u id=“我的应用程序”;
字符串topic=“Tweet01”;
属性=新属性();
setProperty(ConsumerConfig.BOOTSTRAP\u SERVERS\u CONFIG,bootstrapserver);
properties.setProperty(ConsumerConfig.KEY_反序列化器_CLASS_CONFIG,StringDeserializer.CLASS.getName());
properties.setProperty(ConsumerConfig.VALUE_反序列化程序_CLASS_CONFIG,StringDeserializer.CLASS.getName());
setProperty(ConsumerConfig.GROUP\u ID\u CONFIG,grp\u ID);
设置属性(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,“最早”);
//创造消费者
卡夫卡消费者=新卡夫卡消费者(财产);
消费者订阅(“Tweet01”);
while(true){
ConsumerRecords记录=Consumer.poll(持续时间:百万分之一百);
对于(消费者记录:记录){
系统输出打印项次(记录);
}
}
}
}

注意您的消费者记录 而不是

KafkaConsumer类型中的方法轮询(长)不适用于参数(持续时间)'

错误告诉您将
持续时间.ofMillis(100)
替换为
100
。如果要使用Duration,可以升级客户端版本

只能迭代java.lang.Iterable的数组或实例

for循环看起来不错,
ConsumerRecords
确实实现了Iterable接口,但键中存在类型不匹配

FWIW,如果目的是只打印记录,我建议卡夫卡流或其他更高级别的库