2016-02-05 71 views
1

有一个javascript module/library for Apache Storm,但我不记得看到任何使用它的例子。看着图书馆,我不知道如何实现一个发布东西的示例BasicBolt。我们有一个自定义的Storm拓扑构建器和管理器,所以我正在集成并运行一个node.js插件。我能够使用storm-node模块运行一个(https://www.npmjs.com/package/storm-node =>https://github.com/STRML/storm-node,https://github.com/Lazyshot/storm-node)。但如果可能的话,我宁愿使用准系统主Apache风暴库。我得到了如下所示。能够将消息记录到风暴中,但无法将数据发送到拓扑中的下一个螺栓以消耗。我在想我没有正确地调用emit()函数。通过风暴节点,发射我想要的东西要容易得多。任何想法我做错了或失踪?如何使用Apache Storm javascript模块实现示例螺栓?

var ExampleBolt = require("./storm.js").BasicBolt; 

ExampleBolt.prototype.process = function(tuple, done) { 
    this.log("loggedamessage"); 
    var data = JSON.stringify(tuple.values); 
    //originally tried something like this... 
    //this.emit([data]); 
    this.emit({'tuple':data,'anchorTupleId':tuple.values},function taskIdHandler(taskId){ return; }); 
    done(); 
}; 

var bolt = new ExampleBolt(); 
bolt.run(); 

不幸的是,我使用的不报告有关节点螺栓任何有用的运行时错误对我来说,找出问题的风暴基础设施。

+0

我不熟悉javascript的东西,但在Java中'BasicBolt'提供了一个用于发射数据的收集器对象:https://storm.apache.org/javadoc/apidocs/backtype/storm/topology/IBasicBolt。 html –

+1

这是一个[示例](https://github.com/apache/storm/blob/master/examples/storm-starter/multilang/resources/splitsentence.js)并注意你正在使用的风暴版本 – manuzhang

回答