Kafka SimpleConsumer 无法连接到 zookeeper:从通道读取时收到 -1

Kafka SimpleConsumer cannot connect to zookeeper : Received -1 when reading from channel

我正在尝试通过 SimpleConsumer 连接到远程 kafka zookeeper (zookeeperhost:1234),并为我指定的主题提取元数据。但是,我收到此错误:

RunnerMain failed :java.io.EOFException: Received -1 when reading from channel, socket has likely been closed.

我运行 telnet zookeeperhost 1234 得到如下信息:

Trying <ip addr of host>...
Connected to zookeeperhost.somedomain.com.
Escape character is '^]'.

看起来我可以访问该服务,没有 security/permission 问题。

这是我的代码:

SimpleConsumer consumer = new SimpleConsumer ("zookeeperhost", 1234, 100000, 64 * 1024, "leader_lookup");
List<String> topics = Collections.singletonList("some_event");
TopicMetadataRequest req = new TopicMetadataRequest(topics);
TopicMetadataResponse resp = consumer.send(req); //this is the line that is causing the error
List<TopicMetadata> metaData = resp.topicsMetadata();

您需要将 SimpleConsumer 连接到 kafka leader broker(默认端口 9092)而不是 zookeeper。查看此 link 了解如何使用 SimpleConsumer 的详细信息:https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+SimpleConsumer+Example