Java 如何导入Kafka客户端包的ConsumerBalanceListener

Java 如何导入Kafka客户端包的ConsumerBalanceListener,java,hadoop,apache-kafka,hdfs,kafka-consumer-api,Java,Hadoop,Apache Kafka,Hdfs,Kafka Consumer Api,我已经编写了基本的Kafka消费程序,如Eclipse中下面的代码段所示 package KafkaConsumer.Kafka.Consumer.Trial1; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRebalanceListener; import org.apache.kafka.clients.consumer

我已经编写了基本的Kafka消费程序,如Eclipse中下面的代码段所示

package KafkaConsumer.Kafka.Consumer.Trial1;

import org.apache.kafka.clients.consumer.ConsumerConfig; 
import org.apache.kafka.clients.consumer.ConsumerRebalanceListener; 
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.TopicPartition;  
import java.util.Collection; 
import java.util.Collections; 
import java.util.Properties;  
public class App {
    public static void main(String[] args) {
        Properties consumerConfig = new Properties();
        consumerConfig.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "sandbox.hortonworks.com:6667");
        consumerConfig.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group");
        consumerConfig.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
        consumerConfig.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringDeserializer");
        consumerConfig.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,"org.apache.kafka.common.serialization.StringDeserializer");
        KafkaConsumer<byte[], byte[]> consumer = new KafkaConsumer<>(consumerConfig);
        TestConsumerRebalanceListener rebalanceListener = new TestConsumerRebalanceListener();
        consumer.subscribe(Collections.singletonList("ashtest"), rebalanceListener);
        while (true) {
            ConsumerRecords<byte[], byte[]> records = consumer.poll(1000);
            for (ConsumerRecord<byte[], byte[]> record : records) {
                System.out.printf("Received Message topic =%s, partition =%s, offset = %d, value = %s\n",record.topic(), record.partition(), record.offset(), record.value());
            }
            consumer.commitSync();
        }
    }
    private static class TestConsumerRebalanceListener implements ConsumerRebalanceListener {
        public void onPartitionsRevoked(Collection<TopicPartition> partitions) {
            System.out.println("Called onPartitionsRevoked with partitions:" + partitions);
        }
        public void onPartitionsAssigned(Collection<TopicPartition> partitions) {
            System.out.println("Called onPartitionsAssigned with partitions:" + partitions);
        }
    }
  }
包装KafkaConsumer.Kafka.Consumer.Trial1;
导入org.apache.kafka.clients.consumer.ConsumerConfig;
导入org.apache.kafka.clients.consumer.ConsumerBalanceListener;
导入org.apache.kafka.clients.consumer.ConsumerRecord;
导入org.apache.kafka.clients.consumer.ConsumerRecords;
导入org.apache.kafka.clients.consumer.KafkaConsumer;
导入org.apache.kafka.common.TopicPartition;
导入java.util.Collection;
导入java.util.Collections;
导入java.util.Properties;
公共类应用程序{
公共静态void main(字符串[]args){
Properties consumerConfig=新属性();
consumerConfig.put(consumerConfig.BOOTSTRAP_SERVERS_CONFIG,“sandbox.hortonworks.com:6667”);
consumerConfig.put(consumerConfig.GROUP_ID_CONFIG,“我的组”);
consumerConfig.put(consumerConfig.AUTO_OFFSET_RESET_CONFIG,“最早”);
consumerConfig.put(consumerConfig.VALUE\u反序列化程序\u CLASS\u CONFIG,“org.apache.kafka.common.serialization.StringDeserializer”);
consumerConfig.put(consumerConfig.KEY_反序列化程序_CLASS_CONFIG,“org.apache.kafka.common.serialization.StringDeserializer”);
卡夫卡消费者=新卡夫卡消费者(消费者配置);
TestConsumerBalanceListener rebalanceListener=新建TestConsumerBalanceListener();
consumer.subscribe(Collections.singletonList(“ashtest”)、rebalanceListener);
while(true){
ConsumerRecords记录=consumer.poll(1000);
对于(消费者记录:记录){
System.out.printf(“收到的消息主题=%s,分区=%s,偏移量=%d,值=%s\n”,record.topic(),record.partition(),record.offset(),record.value());
}
consumer.commitSync();
}
}
私有静态类TestConsumerBalanceListener实现ConsumerBalanceListener{
已撤销分区上的公共void(集合分区){
System.out.println(“调用onPartitionsRevoked with partitions:”+partitions);
}
已签名的分区上的公共void(集合分区){
System.out.println(“调用onPartitionsAssigned with partitions:”+partitions);
}
}
}
它将错误指向第二个导入行,如下图所示

我已经添加了以下所需的依赖项,如下面的代码所示

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>KafkaConsumer</groupId>
    <artifactId>Kafka.Consumer.Trial1</artifactId>
    <version>0.1</version>
    <packaging>jar</packaging>

    <name>Kafka.Consumer.Trial1</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>0.8.2-beta</version>
        </dependency>
    </dependencies>
</project>

4.0.0
卡夫卡消费者
卡夫卡消费者试验
0.1
罐子
卡夫卡消费者试验
http://maven.apache.org
UTF-8
朱尼特
朱尼特
3.8.1
测试
org.apache.kafka
卡夫卡客户
0.8.2-beta
显示的错误如下所述:

    Description Resource    Path    Location    Type
ConsumerRebalanceListener cannot be resolved to a type  App.java    /Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1    line 31 Java Problem
KEY_DESERIALIZER_CLASS_CONFIG cannot be resolved or is not a field  App.java    /Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1    line 19 Java Problem
The import org.apache.kafka.clients.consumer.ConsumerRebalanceListener cannot be resolved   App.java    /Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1    line 4  Java Problem
The type ConsumerRecord is not generic; it cannot be parameterized with arguments <byte[], byte[]>  App.java    /Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1    line 25 Java Problem
The type ConsumerRecords is not generic; it cannot be parameterized with arguments <byte[], byte[]> App.java    /Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1    line 24 Java Problem
The type KafkaConsumer is not generic; it cannot be parameterized with arguments <> App.java    /Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1    line 20 Java Problem
The type KafkaConsumer is not generic; it cannot be parameterized with arguments <byte[], byte[]>   App.java    /Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1    line 20 Java Problem
VALUE_DESERIALIZER_CLASS_CONFIG cannot be resolved or is not a field    App.java    /Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1    line 18 Java Problem
描述资源路径位置类型
ConsumerBalanceListener无法解析为类型App.java/Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1第31行java问题
键\反序列化器\类\配置无法解析或不是字段App.java/Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1第19行java问题
导入org.apache.kafka.clients.consumer.ConsumerBalanceListener无法解决App.java/kafka.consumer.Trial1/src/main/java/KafkaConsumer/kafka/consumer/Trial1第4行java问题
类型ConsumerRecord不是泛型的;无法使用参数App.java/Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1 line 25 java Problem参数对其进行参数化
消费者记录的类型不是泛型的;无法使用参数App.java/Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1 line 24 java Problem参数对其进行参数化
KafkaConsumer类型不是泛型;无法使用参数App.java/Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1第20行java Problem对其进行参数化
KafkaConsumer类型不是泛型;无法使用参数App.java/Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1第20行java Problem对其进行参数化
无法解析值\反序列化器\类\配置,或者该配置不是字段App.java/Kafka.Consumer.Trial1/src/main/java/KafkaConsumer/Kafka/Consumer/Trial1第18行java问题
但上述错误依然存在。我想知道需要导入哪些依赖项才能使代码运行。
还需要指导如何编辑此代码到下一个级别,我必须将Kafka消费者数据附加到HDFS上的文件中

您正在调用Kafka 0.9中引入的新消费者API,但您的pom.xml指定了一个较旧的Kafka版本。@ChinHuang我有一个疑问!生产者是否可以为0.8,消费者是否可以为0.9?使用此类您的问题已得到解决。您正在调用Kafka 0.9中引入的新消费者API,但您的pom.xml指定了一个较旧的Kafka版本。@ChinHuang我有一个疑问!生产者是否可以为0.8,消费者是否可以为0.9?使用这个类你的问题就解决了。