Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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
Java 消费者连接到zookeeper而不是用于消息消费的代理?_Java_Apache Kafka - Fatal编程技术网

Java 消费者连接到zookeeper而不是用于消息消费的代理?

Java 消费者连接到zookeeper而不是用于消息消费的代理?,java,apache-kafka,Java,Apache Kafka,根据本文件 Zookeper在端口2181启动 经纪人/卡夫卡于9092开始工作 启动生产者发送消息 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka // producer is producing directly to broker not zookeeper which is correct bin/kafka-console-consumer.sh --zook

根据本文件

Zookeper在端口2181启动 经纪人/卡夫卡于9092开始工作

启动生产者发送消息

    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka // producer is producing directly to broker not zookeeper which is correct
    bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kafka --from-beginning
启动消费者接收消息

    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka // producer is producing directly to broker not zookeeper which is correct
    bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kafka --from-beginning
根据我的理解,消费者直接使用来自代理的消息,但在上面的消费者命令中,我们并没有提到代理,只提到zookeeper。意志
消费者连接到zookeeper(而不是代理)以使用消息?

消费者订阅主题并连接到zookeeper。Kafka服务器通过zookeeper群集共享信息。Kafka在Zookeeper中存储基本元数据,如主题、代理、消费者偏移量(队列读取器)等信息。要更好地了解Zookeeper的角色,请查看以下链接


您使用的--zookeeper参数是旧的使用者。新的卡夫卡消费者(您应该使用它)直接连接到卡夫卡代理。为此,可以使用--bootstrap server选项而不是--zookeeper指定localhost:9092。新消费者不再在Zookeeper上保存偏移量,而是在卡夫卡代理上保存到名为“消费者偏移量”的特定主题。

有旧卡夫卡消费者(0.8.2及更早版本)和新卡夫卡消费者(0.9及更高版本)。有关新消费者如何工作的详细描述,请参见此处的原始公告博客

老消费者会连接到zookeeper,但仍然会从卡夫卡那里获取所有消息

新使用者没有zookeeper依赖项,并且根本不连接zookeeper


控制台生产者和控制台消费者都支持旧API和新API,具体取决于您提供的选项。您提供的示例控制台使用者是旧使用者,因为它指定--zookeeper而不是--bootstrap server

使用者偏移现在存储在Kafka中,而不是zookeeper中。只有旧的使用者0.8或更早版本在ZookePeried中存储偏移量安装了最新的kafka,即kafka-0.11.0.0-src from
https://kafka.apache.org/downloads
。作为第一步,我试图使zookeeper服务器。我使用的是与上述卡夫卡下载捆绑在一起的zookeeper。我导航到
\bin\windows
并执行了这个命令
zookeeper-server-start.bat..\config\zookeeper.properties
,但它说
命令的语法不正确。类路径为空。请先构建项目,例如通过运行gradlew jarAll
我不确定这里缺少什么?您下载了源代码。您想下载二进制版本,这样它就可以运行了。由于您使用的是不受良好支持的Windows,我建议您使用docker映像。完整的快速启动在这里感谢二进制下载工作。我执行了以下consumer命令
kafka-console-consumer.bat--bootstrap server localhost:9092--topic test--从一开始它就说
缺少必需的参数[zookeer]
。即使是卡夫卡最新版本的消费者也希望zookeeper?对我有效,应该不需要。尝试显式设置--new consumer,它应该是默认值。您的类路径中可能有一些旧版本的卡夫卡。运行kafka-console-consumer.bat(不带任何参数)时,应打印所有选项能否请您点明我的最后一条评论?因此,替换(旧)命令bin/kafka-console-consumer.sh--zookeer localhost:2181-主题Hello kafka--从头开始(新)bin/kafka-console-consumer.sh——代理服务器localhost:9082——主题Hello kafka——从一开始(端口号也有更改!一开始就没有更改)。我们还需要安装zookeeper吗?