卡夫卡喷口整合

时间:2017-02-17 18:14:37

标签: apache-kafka apache-storm

我正在使用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。

2 个答案:

答案 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构建器上的方法。

参考文献: