写这些东西其实本质上是记录因工作接触 Storm 之后的学习进度,既然是工作,当然要敲代码,所以这一篇就分享下基本 Java-API 吧。
首先看下面的图(画图不行见谅),这是 Storm API 使用中最基本的接口和抽象类关系。
OK,这里我们可以清楚的看到,IComponent 是 API 核心接口,那么其是怎么的构成呢?
public interface IComponent extends Serializable {
/**
* @param declarer this is used to declare output stream ids, output fields, and whether or not each output stream is a direct stream
*/
void declareOutputFields(OutputFieldsDeclarer declarer);
Map<String, Object> getComponentConfiguration();
}
这两个方法很简单,declareOutputFields 是申明 topology 中流的输出模式(具体讲 Stream 模式的时候再说),而 getComponentConfiguration 是获取 Storm 配置信息的。
其实在 Visio 图中是有两个基础接口我没画出来的,分别是 ISpout 和 Ibolt,为什么呢?因为我们可以理解为 IRichSpout 和 IRichBolt 就是两者与 IComponent 的合体(继承)。接着一个个来,先说 Spout:
void open(Map conf, TopologyContext context, SpoutOutputCollector collector);
//Spout 终止的时候调用(不保证一定被调用)
void close();
//Spout 激活的时候调用
void activate();
//Spout 失活(可能重新激活)时调用,调用此方法时不会调用 nextTuple
void deactivate();
void<