如何检查 Kafka Server 是否正在运行?

新手上路,请多包涵

我想在开始生产和消费工作之前确保 kafka 服务器是否正在运行。它在windows环境中,这是我在eclipse中的kafka服务器代码……

 Properties properties = new Properties();
properties.setProperty("broker.id", "1");
properties.setProperty("port", "9092");
properties.setProperty("log.dirs", "D://workspace//");
properties.setProperty("zookeeper.connect", "localhost:2181");

Option<String> option = Option.empty();
KafkaConfig config = new KafkaConfig(properties);
KafkaServer kafka = new KafkaServer(config, new CurrentTime(), option);
kafka.startup();

在这种情况下 if (kafka != null) 是不够的,因为它总是正确的。那么有什么方法可以知道我的 kafka 服务器正在运行并准备好用于生产者。我有必要检查一下,因为它会导致一些起始数据包丢失。

原文由 Khan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 612
1 个回答

必须为所有 Kafka 代理分配一个 broker.id 。启动时,代理将在 Zookeeper 中创建一个临时节点,其路径为 /broker/ids/$id 。由于节点是临时节点,一旦代理断开连接(例如关闭),它将被删除。

您可以像这样查看临时代理节点的列表:

echo dump | nc localhost 2181 | grep brokers

ZooKeeper 客户端接口公开了许多命令; dump 列出集群的所有会话和临时节点。

注意,以上假设:

  • 您在 --- 上的默认端口 ( 2181 localhost 上运行 ZooKeeper,而 localhost 集群的领导者是
  • 您的 zookeeper.connect Kafka 配置没有为您的 Kafka 集群指定 chroot 环境,即它只是 host:port 而不是 host:port/path

原文由 Paul Carey 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题