如果你還沒看過Flume-ng源碼解析系列中的啟動(dòng)流程、Channel組件和Sink組件,可以點(diǎn)擊下面鏈接:
Flume-ng源碼解析之啟動(dòng)流程
Flume-ng源碼解析之Channel組件
Flume-ng源碼解析之Sink組件
在前面三篇文章中我們初步了解了Flume的啟動(dòng)流程、Channel組件和Sink組件,接下來我們一起來看看agent三大組件中Source組件。
1 Source
Source,作為agent中的消息來源組件,我們來看看它是如何將event傳遞給channel的和它的特性。
依然先看代碼:
@InterfaceAudience.Public@InterfaceStability.Stablepublic interface Source extends LifecycleAware, NamedComponent { public void setChannelProcessor(ChannelProcessor channelProcessor); public ChannelProcessor getChannelProcessor(); }
我們可以看到它里面定義的兩個(gè)需要實(shí)現(xiàn)方法是getChannelProcessor和setChannelProcessor,我們大概可以猜到,source就是通過ChannelProcessor將event傳輸給channel的。
這里先來了解一下Source的類型,F(xiàn)lume根據(jù)數(shù)據(jù)來源的特性將Source分成兩類類,像Http、netcat和exec等就是屬于事件驅(qū)動(dòng)型(EventDrivenSo