【发布时间】:2017-12-05 13:37:03
【问题描述】:
我正在尝试使用 Java API 运行 zookeeper,以便能够启动具有多个分区的主题。我相信this answer 可以解决问题。但是,当我尝试运行此代码时,出现错误:
无法连接到 Zookeeper 服务器“localhost:2181”,超时时间为 8000 毫秒
在这台机器上,我没有运行 zookeeper 服务器。但我想用 Java 启动一个实例(我目前可以使用 ZooKeeperServerMain() 类来实现)。所以也许我需要做同样的事情,但以某种方式将它与包含向主题添加多个分区的可能性的第一个答案结合起来。
不管怎样,我可以使用this answer 启动zookeeper,但这只会为一个主题创建一个分区,这不是我想要的。
本质上,我想启动 Zookeeper(我可以使用第二个链接来做),在本地启动 Kafka(我也可以做),启动一个生产者,它产生一个主题但三个不同的分区,以及 3 个不同的消费者,它们将读取消息,每个分区一个(如果我正确理解 Kafka,如果启动 3 个消费者,3 个分区将被平均分配)。所有这些都是使用 Java API 完成的(我没有运行 Kafka 脚本或任何东西)。但是,我很难创建一个包含三个分区的主题,这是我的问题。
【问题讨论】:
-
你是如何创建主题的?你在运行生产者/消费者之前创建它吗?还是生产者/消费者自动创建的?
-
@vahid,如果我不使用 Zookeeper 类(这是我目前正在做的),主题是由生产者使用自动创建的: producer.send(new ProducerRecord
(topic, key, message)。但是,正如我最初的问题所暗示的那样,这只会为主题创建一个分区,但我想在同一个主题中创建 3 个分区。 -
是否可以在代理配置中使用
num.partitions=3运行您的代理?此配置的默认值为 1,这就是为什么您最终只为自动创建的主题创建了一个分区。 -
如何/在哪里可以指定代理配置中的分区数?
-
您目前如何运行您的 Kafka 代理?
标签: java maven localhost apache-kafka