Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cloudera Quickstart中Kafka的Java消费者无法使用_Java_Apache Kafka_Kafka Consumer Api_Cloudera_Cloudera Quickstart Vm - Fatal编程技术网

Cloudera Quickstart中Kafka的Java消费者无法使用

Cloudera Quickstart中Kafka的Java消费者无法使用,java,apache-kafka,kafka-consumer-api,cloudera,cloudera-quickstart-vm,Java,Apache Kafka,Kafka Consumer Api,Cloudera,Cloudera Quickstart Vm,我有一个cloudera Quickstart虚拟机。我已经使用Cloudera Manager安装了Kafka包裹,并使用基于控制台的consumer and producer在VM中运行良好。 但当我尝试使用基于java的消费者时,它不会生成或消费消息。我可以列出主题。 但我不能使用消息。 下面是我的代码 package kafka_consumer; import java.util.Arrays; import java.util.Properties; import org.apac

我有一个cloudera Quickstart虚拟机。我已经使用Cloudera Manager安装了Kafka包裹,并使用基于控制台的consumer and producer在VM中运行良好。 但当我尝试使用基于java的消费者时,它不会生成或消费消息。我可以列出主题。 但我不能使用消息。 下面是我的代码

package kafka_consumer;

import java.util.Arrays;
import java.util.Properties;
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;

public class mclass {
    public static void main(String[] args) {
        Properties props = new Properties();
        props.setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "10.0.75.1:9092");
        // Just a user-defined string to identify the consumer group
        props.put(ConsumerConfig.GROUP_ID_CONFIG, "test");
        // Enable auto offset commit
        props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true");
        props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000");
        props.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
        props.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

        try (KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props)) {
            // List of topics to subscribe to
            consumer.subscribe(Arrays.asList("second_topic"));
            for (String k_topic : consumer.listTopics().keySet()) {
                System.out.println(k_topic);
            }
            while (true) {
                try {
                    ConsumerRecords<String, String> records = consumer.poll(100);
                    for (ConsumerRecord<String, String> record : records) {
                        System.out.printf("Offset = %d\n", record.offset());
                        System.out.printf("Key    = %s\n", record.key());
                        System.out.printf("Value  = %s\n", record.value());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
kafka_包装消费者;
导入java.util.array;
导入java.util.Properties;
导入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;
公共类mclass{
公共静态void main(字符串[]args){
Properties props=新属性();
setProperty(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,“10.0.75.1:9092”);
//只是一个用户定义的字符串,用于标识消费者组
props.put(ConsumerConfig.GROUP_ID_CONFIG,“test”);
//启用自动偏移提交
put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,“true”);
put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG,“1000”);
setProperty(ConsumerConfig.KEY_反序列化程序_CLASS_CONFIG,StringDeserializer.CLASS.getName());
setProperty(ConsumerConfig.VALUE_反序列化程序_CLASS_配置,StringDeserializer.CLASS.getName());
试一试(卡夫卡消费者=新卡夫卡消费者(道具)){
//要订阅的主题列表
consumer.subscribe(Arrays.asList(“第二个主题”);
for(字符串k_主题:consumer.listTopics().keySet()){
System.out.println(k_主题);
}
while(true){
试一试{
ConsumerRecords记录=consumer.poll(100);
对于(消费者记录:记录){
System.out.printf(“Offset=%d\n”,record.Offset());
System.out.printf(“Key=%s\n”,record.Key());
System.out.printf(“Value=%s\n”,record.Value());
}
}捕获(例外e){
e、 printStackTrace();
}
}
}
}
}
下面是代码的输出。虽然控制台生产者正在生成消息,但消费者无法接收消息

PS:我可以远程登录卡夫卡经纪人的端口和ip。我甚至可以列出主题。消费者在不崩溃的情况下持续运行,但没有消息被消费


谁在第二个主题上制作任何东西?我有另一个终端为卡夫卡运行控制台制作程序。它正在产生信息。我可以使用另一个基于控制台的消费者来使用这些消息,但在java中不能这样做制作人实际发送了多少条记录?是刷新记录吗?您是否尝试将消费者组偏移量设置为主题的开头?旁白:你真的需要整个cloudera虚拟机来运行卡夫卡吗?@mazaneicha Hi谢谢你的评论。我看到以下错误<代码>错误:由于org.apache.kafka.common.errors.CoordinatorNotAvailableException:协调器不可用,执行消费者组命令失败。