Storm bolt中跨任务的变量

时间:2015-09-28 10:43:04

标签: java apache-storm

字段分组可以将具有某些字段的元组指向同一任务。一个执行程序可以包含多个任务。

如果我声明一个带有私有变量整数的螺栓来计算元组。

public static class CountBolt implements IRichBolt {
    OutputCollector _collector;
    private int count;

    public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
        _collector = collector;
        count = 0;
    }

    public void execute(Tuple tuple) {
        count = count + 1;
        _collector.ack(tuple);
    }

    public void cleanup() {
    }

    public void declareOutputFields(OutputFieldsDeclarer declarer) {
    }

    public Map getComponentConfiguration() {
        return null;
    }
}

此计数是否显示同一任务或同一执行人的输入总数?

1 个答案:

答案 0 :(得分:2)

计数将按每项任务进行。每个任务都有自己的Spout / Bolt类实例。

如果变量声明为static,那将是每个工人。 (不是每个执行者,因为一个工人可能会运行同一个Spout / Bolt的多个执行者。)