Java kafka consumer API consumer.poll()doen';没有错误,没有例外,只有阻塞

Java kafka consumer API consumer.poll()doen';没有错误,没有例外,只有阻塞,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,我学习卡夫卡遵循阿帕奇卡夫卡文件。我用默认配置启动它 bin/zookeeper-server-start.sh config/zookeeper.properties bin/kafka-server-start.sh config/server.properties & 我运行了kafka-console-producer.sh和kafka-console-consumer.sh来生成和使用消息,结果是成功的。我使用ProducerAPI编写了一个java代码来生成消息,这很好。这

我学习卡夫卡遵循阿帕奇卡夫卡文件。我用默认配置启动它

bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties &
我运行了kafka-console-producer.sh和kafka-console-consumer.sh来生成和使用消息,结果是成功的。我使用ProducerAPI编写了一个java代码来生成消息,这很好。这由kafka-console-consumer.sh验证。代码与Apache Kafka指南相同:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer",    "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

Producer<String, String> producer = new KafkaProducer<>(props);
for(int i = 0; i < 100; i++)
  producer.send(new ProducerRecord<String, String>("my-topic", Integer.toString(i), Integer.toString(i)));

producer.close();
但如果我没有连接到zookeeper,而是直接连接到kafka代理,那么它也不会工作,没有错误,也没有例外,它只是阻塞

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
卡夫卡版本和API版本为0.11.0.0

为什么他们不能使用消息?

使用
--zookeeper
参数意味着使用旧的使用者,它工作得很好,因为您正在指定zookeeper服务器(
本地主机:2181

当您想要指定卡夫卡代理(因此使用新的使用者)时,您必须使用
--bootstrap server
选项:您仍在使用
--zookeer
,但要传递一个有效的卡夫卡代理地址(
localhost:9092

因此,对于控制台使用者应用程序,您的配置需要是
--引导服务器localhost:9092
,而不是
--zookeeper localhost:9092

关于您的代码,您确定轮询方法已被阻止吗?如果没有记录但没有阻塞,则应在100 ms(您指定的超时)后退出

然后从您的代码中,我看到制作人发送到“我的主题”,消费者订阅“foo”和“bar”;最后,控制台使用者读取“test”。都是不同的话题

props.put(“自动偏移、重置”、“最小”);
添加此属性,可能会起作用

很抱歉我的问题描述。首先,我是消费者主题“我的主题”,但我写错了。第二个是我使用的——引导服务器localhost:9092。但它也不起作用。控制台使用者从“测试”中读取,因为另一个控制台生产者生成了一些主题“测试”的消息。它不起作用。auto.offset.reset的值是最新、最早的值之一。您好,我也被困在同一点上了吗?你设法让它工作了吗?
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning