ControllerService是NiFi中最重要和最基礎的組件之一,作為數據流處理的控制器,承擔著諸多重要的職責。
一、ControllerService的定義及作用
ControllerService是NiFi中提供的一種服務,用於提供數據流處理過程中所需的控制邏輯,封裝可重用的實現邏輯,使得組件之間的通信更加靈活便捷。
ControllerService主要用於以下方面:
1、數據源和數據目的地的定義與管理
2、數據流處理過程中的算法實現與其它邏輯處理
3、數據處理過程中的參數管理
從上述內容中可以看出,ControllerService作為NiFi中的控制器,對於整個數據流處理過程來說,扮演着極其重要的角色。
二、ControllerService的使用方法
ControllerService相對於其他processor,最大的優勢在於其可重用性。在整個數據流處理過程中,不同的processor可能需要相同或者相似的處理方式,此時就可以使用ControllerService。
ControllerService大體上可以分成兩類:一類是數據源或者數據目的地的ControllerService,另一類是一些與數據特有處理邏輯相關的ControllerService。
三、ControllerService的生命周期
ControllerService的生命周期需要 NiFi 自動管理,從而簡化使用場景。在實際使用中,ControllerService 需要實現某些特定的方法以響應 生命周期事件。這個方法將告訴 NiFi 在ControllerService開始運行(prevStart)、啟動後好運行(stop)等時的響應行為操作。
1、強制停止
@Override public void shutdown() { super.shutdown(); // do somethings }
2、啟動初始化
@Override public void initialize(...
3、停止處理邏輯
@Override public void onPropertyModified(...
4、初始化屬性更改
@Override public void onEnabled(...
四、ControllerService的實例代碼
以下是一個簡單的ControllerService示例,在NiFi的WebUI中創建ControllerService,然後輸入該例子中的參數,即可啟動該ControllerService。
/** * 這是一個簡單的例子,將 hello, world 連接到輸出流中 */ @Tags({"example"}) @CapabilityDescription("Provides a simple ControllerService that just always returns the static string 'Hello, World!'") public class HelloWorldService extends AbstractControllerService { public static final String HELLO = "Hello, World!"; public String doHello() { return "Hello, World!"; } }
五、總結
通過本文對於ControllerService的闡述,可以發現,ControllerService作為NiFi控制器的一個重要組成部分,對於整個數據流處理過程來說,具有非常重要的作用。在實際應用的過程中,合理利用ControllerService可以提高數據流處理的效率和可重用性。
原創文章,作者:EKNHD,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/325060.html