要配置kafkaSpout
,它需要BrokerHosts
,而BrokerHosts又需要一个动物园管理员主机。
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服务器可能会停机,整个拓扑将不可用。
找到了我的问题的答案:连接字符串格式是“host 1: port1, host 2: port2, host 3: port3...”
(Storp-kafka在引擎盖下使用Curator),所以只需向ZkHosts构造函数提供多个ZooKeer服务器url