ApacheKafka异常:org.Apache.Kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/List;)V
我使用的是ApacheKafka版本Kafka_2.10-0.10.1.0 在Poc期间,我创建了简单的生产者和消费者。 当我尝试使用邮件时,收到以下错误:ApacheKafka异常:org.Apache.Kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/List;)V,java,apache-kafka,kafka-consumer-api,nosuchmethoderror,Java,Apache Kafka,Kafka Consumer Api,Nosuchmethoderror,我使用的是ApacheKafka版本Kafka_2.10-0.10.1.0 在Poc期间,我创建了简单的生产者和消费者。 当我尝试使用邮件时,收到以下错误: Exception in thread "Thread-0" java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/List;)V at com.spnotes.kafka.simple.Consu
Exception in thread "Thread-0" java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/List;)V
at com.spnotes.kafka.simple.Consumer$ConsumerThread.run(Consumer.java:59)
代码:
package com.spnotes.kafka.simple;
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.errors.WakeupException;
import java.util.Arrays;
import java.util.Properties;
import java.util.Scanner;
public class Consumer {
private static Scanner in;
public static void main(String[] argv)throws Exception{
if (argv.length != 2) {
System.err.printf("Usage: %s <topicName> <groupId>\n",
Consumer.class.getSimpleName());
System.exit(-1);
}
in = new Scanner(System.in);
String topicName = argv[0];
String groupId = argv[1];
ConsumerThread consumerRunnable = new ConsumerThread(topicName,groupId);
consumerRunnable.start();
String line = "";
while (!line.equals("exit")) {
line = in.next();
}
consumerRunnable.getKafkaConsumer().wakeup();
System.out.println("Stopping consumer .....");
consumerRunnable.join();
}
private static class ConsumerThread extends Thread{
private String topicName;
private String groupId;
private KafkaConsumer<String,String> kafkaConsumer;
public ConsumerThread(String topicName, String groupId){
this.topicName = topicName;
this.groupId = groupId;
}
public void run() {
Properties configProperties = new Properties();
configProperties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
configProperties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArrayDeserializer");
configProperties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer");
configProperties.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
configProperties.put(ConsumerConfig.CLIENT_ID_CONFIG, "simple");
//Figure out where to start processing messages from
kafkaConsumer = new KafkaConsumer<String, String>(configProperties);
kafkaConsumer.subscribe(Arrays.asList(topicName));
//Start processing messages
try {
while (true) {
ConsumerRecords<String, String> records = kafkaConsumer.poll(100);
for (ConsumerRecord<String, String> record : records)
System.out.println(record.value());
}
}catch(WakeupException ex){
System.out.println("Exception caught " + ex.getMessage());
}finally{
kafkaConsumer.close();
System.out.println("After closing KafkaConsumer");
}
}
public KafkaConsumer<String,String> getKafkaConsumer(){
return this.kafkaConsumer;
}
}
}
错误:
Exception in thread "Thread-0" java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/List;)V
at com.spnotes.kafka.simple.Consumer$ConsumerThread.run(Consumer.java:59)
我用错API了,谢谢amethystic。 添加新的客户端版本后,它开始工作 旧API在POM中
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.9.0.0</version>
</dependency>
org.apache.kafka
卡夫卡客户
0.9.0.0
在POM中添加了新的API
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.0.0</version>
</dependency>
org.apache.kafka
卡夫卡客户
0.10.0.0
卡夫卡API新旧版本之间没有向后兼容性KafkaConsumer.subscribe(java.utils.List)是0.9.0API。检查您正在使用的客户端版本,以确保使用了0.10.*。我正在使用kafka客户端-2.2.0 Iamerror@ShrJoshi即使集群中安装了多个版本的Kafka,也会发生这种情况。解决这种情况的最佳方法是在shell中指定以下命令。导出spark kafka版本=例如:导出spark kafka版本=0.10
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.0.0</version>
</dependency>