用于 Zookeeper quorum 的 Apache 风暴 Kafka SpoutConfig

Apache storm Kafka SpoutConfig for Zookeeper quorum

要配置一个 kafkaSpout,它需要 BrokerHosts,这又需要一个 zookeeper 主机。

BrokerHosts host = new ZkHosts("server-1:2181");

SpoutConfig spoutConfig = new SpoutConfig(host, TopologyConstants.KAFKA_QUEUE.SOURCE,
            "/" + TopologyConstants.KAFKA_QUEUE.SOURCE, ID);

KafkaSpout kafkaSpout = new KafkaSpout(spoutConfig);

问题是,如果我有一个 zookeeper 法定人数(3 个 zk 服务器的集群),我如何配置 KafkaSpout 来接受法定人数的所有成员而不是只有 1 个。 由于一台zookeeper服务器可能宕机,整个拓扑将不可用。

找到我的问题的答案: 连接字符串格式为 "host1:port1,host2:port2,host3:port3..."(storm-kafka 在后台使用 Curator),因此只需向 ZkHosts 构造函数提供多个 Zookeeper 服务器 url