Flume 1.7 源码分析(一)源码编译
Flume 1.7 源码分析(二)整体架构
Flume 1.7 源码分析(三)程序入口
Flume 1.7 源码分析(四)从Source写数据到Channel
Flume 1.7 源码分析(五)从Channel获取数据写入Sink
5 从Source写数据到Channel
5.1 Source部分
5.1.1 SourceRunner
SourceRunner就是专门用于运行Source的一个类。
在”物化配置”一节获取配置信息后,会根据Source去获取具体的SourceRunner,调用的是SourceRunner的forSource方法。
public static SourceRunner forSource(Source source) {
SourceRunner runner = null;
if (source instanceof PollableSource) {
runner = new PollableSourceRunner();
((PollableSourceRunner) runner).setSource((PollableSource) source);
} else if (source instanceof EventDrivenSource) {
runner = new EventDrivenSourceRunner();
((EventDrivenSourceRunner) runner).setSource((EventDrivenSource) source);
} else {
throw new IllegalArgumentException("No known runner type for source " + source);
}
return runner;
}
可以看到source分为了2种类型,并有对应的sourceRunner(PollableSourceRunner、EventDrivenSourceRunner)。这2种source区别在于是否需要外部的驱动去获取数据,不需要外部驱动(采用自身的事件驱动机制)的称为EventDrivenSource,需要