##IComponent IComponent继承Serializable接口, 为topology中所有可能组件提供共同的方法。
interface IComponent extends Serializable
提供两个方法
/**
* Common methods for all possible components in a topology. This interface is used
* when defining topologies using the Java API.
*/
public interface IComponent extends Serializable {
/**
* Declare the output schema for all the streams of this topology.
*
* @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);
/**
* Declare configuration specific to this component. Only a subset of the "topology.*" configs can
* be overridden. The component configuration can be further overridden when constructing the
* topology using {@link TopologyBuilder}
*
*/
Map getComponentConfiguration();
}
1.1 declareOutputFields(OutputFieldsDeclarer declarer)
此方法用于声明当前Spout的Tuple发送流。Stream流的定义是通过OutputFieldsDeclarer.declare方法完成的,其中的参数包括了发送的域Fields。 如: 在RandomSentenceSpout中重写了
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("word"));}
1.2 getComponentConfiguration();
&mesp;此方法用于声明针对当前组件的特殊的Configuration配置。