我正在使用kafka 0.10.1.1和风暴1.0.2。在kafka集成的风暴文档中,我可以看到使用zookeeper仍然维护偏移,因为我们正在使用zookeeper服务器初始化kafka spout。 我怎样才能使用kafka服务器来引导喷口。这有任何例子。 风暴文档中的示例
permutations()
使用zookeeper的这个选项工作正常并且消耗了这些消息。但我无法将消费者群体或风暴节点视为kafkamanager ui中的消费者。
尝试了替代方法。
BrokerHosts hosts = new ZkHosts(zkConnString);
SpoutConfig spoutConfig = new SpoutConfig(hosts, topicName, "/" + topicName, UUID.randomUUID().toString());
spoutConfig.scheme = new SchemeAsMultiScheme(new StringScheme());
KafkaSpout kafkaSpout = new KafkaSpout(spoutConfig);
但是这个解决方案在从kafka读取几条消息后显示了CommitFailedException。
答案 0 :(得分:1)
Storm-kafka使用普通的kafka客户端在zookeeper中以不同的位置和不同的格式写入消费者信息。所以你无法在kafkamanager ui中看到它。
您可以找到其他一些监控工具,例如 https://github.com/keenlabs/capillary
答案 1 :(得分:1)
根据您的替代方法,由于以下原因,您可能会获得CommitFailedException
props.put(KafkaSpoutConfig.Consumer.ENABLE_AUTO_COMMIT, "true");
风暴2.0.0-SNAPSHOT(以及1.0.6) - KafkaConsumer autocommit不受支持
来自文档:
请注意,KafkaConsumer自动提交不受支持。该 如果是,KafkaSpoutConfig构造函数将抛出异常 设置“enable.auto.commit”属性,并使用该消费者 spout将始终将该属性设置为false。你可以配置 通过setProcessingGuarantee自动提交的类似行为 KafkaSpoutConfig构建器上的方法。
参考文献: