生产者能否在Kafka 0.8中找到经纪人的增加和删除?

时间:2013-01-14 05:12:45

标签: producer-consumer apache-zookeeper messagebroker apache-kafka

我们知道,在kafka 0.7中,我们可以为生产者指定zk.connect,因此生产者可以找到代理的添加和删除。但是在kafka 0.8中,我们不能为生产者指定zk.connect。 kafka 0.8的生产商可以找到吗?如果没有,系统的可扩展性并不比0.7版差?

2 个答案:

答案 0 :(得分:2)

您仍然可以使用ZooKeeper客户端来检索代理列表:

ZkClient zkClient = new ZkClient("localhost:2108", 4000, 6000, new BytesPushThroughSerializer());
List<String> brokerList = zkClient.getChildren("/brokers/ips");

根据这一点,您不必在客户端“硬编码”代理列表,就系统架构而言,您是灵活的。但无论如何,这会再次添加ZooKeeper依赖,这实际上是生产者在几种环境中的劣势。

如果您想详细了解所谓的“群集元数据API”解决方案,请查看以下链接:https://issues.apache.org/jira/browse/KAFKA-369

最佳

P.S。:很抱歉将此问题转发给您的其他问题 - 但答案适合两者; - )

答案 1 :(得分:0)

很难弄清楚到底在找什么,在0.8中我们必须在metadata.broker.list属性中指定经纪人列表

    Properties props = new Properties();
    props.put("metadata.broker.list", "broker1:9092,broker2:9092");

来自kafka消费者example他们说

  

属性“metadata.broker.list”定义了Producer可以找到一个或多个Brokers以确定每个主题的Leader的位置。这不需要是集群中的完整Broker集,但如果第一个Broker不可用,则应至少包含两个。无需担心找出哪个Broker是主题(和分区)的领导者,生产者知道如何连接到Broker并要求元数据然后连接到正确的Broker。

通过说添加是否意味着向群集添加新节点?