如何在Apache Storm中添加用户定义的函数

时间:2016-04-15 06:21:47

标签: apache-storm

我正在尝试使用Apache Storm解决问题。我有以下疑问。

  1. 除了内置函数(如execute()prepare()等)之外,是否有任何方法可以在螺栓中添加用户定义的函数?如果可能,如何从execute()
  2. 调用此类函数
  3. 还可以在Bolt中添加“递归函数”类逻辑吗?

1 个答案:

答案 0 :(得分:0)

当然你可以为你添加任何方法,是的,它也可以是递归的。我不确定你是什么意思"如何从execute()调用这样的函数 - 只需从那里调用它 - 它是一种常规方法:

public class MyBolt extends IRichBolt {
    void prepare(Map stormConf, TopologyContext context, OutputCollector collector) { /* put your code here */ }
    void cleanup() { /* put your code here */ }
    void declareOutputFields(OutputFieldsDeclarer declarer) { /* put your code here */ }
    Map<String, Object> getComponentConfiguration() { /* put your code here */ }

    void execute(Tuple input) {
        // just call the new methods
        int x = myFirstFunction();
        mySecondFunction(5);
    }

    // can also be public or protected etc (any return type or parameters are ok)
    private int myFirstFunction() {
        return 0;
    }
    // recursive
    private void mySecondFunction(int a) {
        while(--a > 0) {
            mySecondFunction(a);
        }
    }
}