消费者控制台中的引导服务器与动物园管理员参数

Abr*_*han 6 apache-kafka kafka-consumer-api

我已经阅读了消费者控制台中的线程boostrap-server vs zookeeper ,但这并不清楚我的疑问。

我的疑问是,假设我们在 localhost:2181 上运行了 Zookeeper,三个代理服务器在 localhost:9092、localhost:9093、localhost:9094 上运行,我们有一个主题 my_topic,分区 3 和复制 1,主题由代理共享因为它有三个分区。

在新版本的 Apache-Kafka 中,当我们运行消费者控制台时,我们需要传递--bootstrap-server localhost:9092代理地址之一,但在早期版本中,我们传递的是 Zookeeper 地址。

因此,当我们运行消费者以消费来自主题的消息时my_topic,我们传递的参数--bootstrap-server localhost:9092只是代理地址之一,所以我的问题是,我们是否限制消费者您只能消费来自该代理的消息,如果是与其说该代理本身是否已关闭,那么消费者将如何读取来自该主题的消息。我不明白它是如何工作的,请有人清除它。

运行消费者的旧版本命令(< 1.0)
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from- beginning --topic my_topic
运行消费者的新版本命令(> = 1.0)
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my_topic

ppa*_*rno 4

在之前的 Kafka 版本(0.9.0 之前)中,消费者需要连接到 Zookeeper 来提交偏移量并获取主题元数据。从0.9.0开始,消费者偏移量保存在Kafka主题(__consumer_offset)中,并且不再需要与Zookeeper的连接。

您在--bootstrap-server参数中指定的内容正是名称 .. 所说的内容。这是一个引导服务器列表:这意味着消费者连接到您指定的代理并请求有关它想要使用的主题的元数据。不限于仅消费来自--bootstrap-server参数中列出的代理的消息。假设您指定“kafka1:9092”作为引导服务器(在您所说的有 3 个代理的集群中)。连接后,消费者发送元数据请求以获取有关“my_topic”的信息。“kafka1”服务器可以回复“我不是 my_topic 分区 0 的领导者,这里是 kafka2 的领导者的代理”。此时,消费者连接到“kafka2”代理以开始获取消息。