【问题标题】:Getting the list of Brokers Dynamically动态获取 Broker 列表
【发布时间】:2016-05-15 23:26:41
【问题描述】:

我是卡夫卡的新手。我这样写了我的第一个消息生成器

private Properties kafkaProps = new Properties();
kafkaProps.put("bootstrap.servers", "broker1:9092,broker2:9092");
kafkaProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
kafkaProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
producer = new KafkaProducer<String, String>(kafkaProps);

我是否有可能引导到 Kafka 并询问存在哪些代理,然后将它们放入属性中?否则总会出现代码配置与集群实际状态不同步的问题。

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    通常,kafka 代理将由 zookeeper 管理,因此您可以访问 zookeeper 实例以收集有关 kafka 代理的信息。

    例如,您可以使用 org.apache.storm.shade.org.apache.zookeeper.ZooKeeper 实例连接到 Zookeeper,并运行其返回 kafka 代理 ID 列表的 getChildren(pathToBrokerIds, false) 方法。 然后你可以使用每个 id 作为参数运行 zookeeper 的 getData(..) 方法,并获取该代理的信息,包括主机和端口。

    【讨论】:

    • 我怎么知道pathToBrokerIds
    • 这取决于你的zookeeper配置,但默认应该是“/brokers/ids”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多