ETL工具-nifi乾貨系列 第十五講 nifi處理器ConsumeKafka實戰教程

1、上一節課我們學習了處理器PushKafka,通過該處理器往kafka中間件寫數據,今天我們一起學習處理器ConsumeKafka,此處理器從kafka讀取數據進行後續處理,如下圖所示:

 本次示例比較簡單:處理器ConsumeKafka 根據topic讀取kafka中的數據,然後將數據傳遞給LogMessage處理器。

2、處理器ConsumeKafka屬性配置,如下圖所示:

 

Kafka Brokers:以 host:port 格式表示的 Kafka Broker,集羣列表通過逗號,如192.168.101.5:9092,192.168.101.6:9092

Security Protocol: 用於與代理通信的安全協議。對應於 Kafka 客戶端的 security.protocol 屬性。這裏我們使用默認值PLAINTEXT

SASL Mechanism:用於認證的 SASL 機制。對應於 Kafka 客戶端的 sasl.mechanism 屬性。這裏我們使用默認值GSSAPI

Kerberos Service Name:與broker JAAS 配置中配置的 Kafka 服務器的主要名稱匹配的服務名稱。

Kerberos Credentials Service:支持使用 Kerberos 進行通用憑證認證的服務。

Kerberos Principal:用於與 Kerberos 進行身份驗證的主體。

Kerberos Keytab:用於與 Kerberos 進行身份驗證的 Keytab 憑據,這個屬性需要提供一個文件。

SSL Context Service:支持與 Kafka brokers 進行 SSL 通信的服務。

Topic Name:設置 Kafka 主題的名稱,多個主題的話逗號分隔,如xiaojingang,dajingang

Topic Name Format:指定要拉取數據的 Kafka 主題的名稱。如果有多個主題,可以使用逗號分隔;如果是單個正則表達式,則指定是否提供的主題名稱爲逗號分隔列表或單個正則表達式。

Honor Transactions:指定 NiFi 是否應在與 Kafka 通信時遵守事務性保證。如果設置爲 false,處理器將使用“隔離級別”爲 read_uncommitted。這意味着消息將在寫入 Kafka 後立即接收,但即使生產者取消事務,也會被拉取。如果此值設置爲 true,則 NiFi 將不會接收任何生產者事務被取消的消息,但這可能會導致一些延遲,因爲消費者必須等待生產者完成整個事務,而不是在消息可用時立即拉取。

Group ID:一個羣組 ID 用於標識屬於同一消費者組的消費者。

 

 Offset Reset: Kafka 初始偏移量設置,有earliest 、latest 、none 三個選項。

Key Attribute Encoding:發出的FlowFiles具有一個名爲'kafka.key'的屬性。此屬性規定了該屬性值應如何編碼。這是使用默認值。

Message Demarcator:指定用於在單個FlowFile中分隔多個消息的字符串(解釋爲UTF-8)。如果未指定,則將整個FlowFile內容用作單個消息。如果指定了分隔符,則將FlowFile內容拆分爲此分隔符,並將每個部分作爲單獨的Kafka消息發送。要輸入特殊字符,如'換行符',請使用CTRL+Enter或Shift+Enter,取決於您的操作系統。

 Separate By Key:如果設置爲 true,並且設置了 <Message Demarcator> 屬性,則僅當兩個 Kafka 消息具有相同的鍵時,纔會將兩個消息添加到同一個 FlowFile 中。

Message Header Encoding:發現在 Kafka 消息上的任何消息頭都將作爲屬性添加到出站 FlowFile 中。此屬性指示用於反序列化頭的字符編碼。

Headers to Add as Attributes (Regex):正則表達式將與所有消息頭進行匹配。任何名稱與正則表達式匹配的消息頭都將作爲屬性添加到 FlowFile 中。如果未指定,則不會將頭值添加爲 FlowFile 屬性。如果兩條消息具有相同標題的不同值,並且該標題由提供的正則表達式選擇,則這兩條消息必須添加到不同的 FlowFiles 中。因此,如果消息預期具有每個消息唯一的標題值(例如標識符或時間戳),用戶在使用類似於 ".*" 的正則表達式時應謹慎,因爲它將阻止 NiFi 將消息有效地捆綁在一起。

 Max Poll Records:指定 Kafka 在單次輪詢中應返回的最大記錄數。

Max Uncommitted Time:指定允許的最長時間,直到必須提交偏移量。該值影響偏移量提交的頻率。較少頻繁地提交偏移量會增加吞吐量,但也會增加在重新平衡或在提交之間的 JVM 重啓時潛在數據重複的窗口。此值還與最大輪詢記錄和使用消息分隔符相關。當使用消息分隔符時,我們可以有遠比不使用時更多的未提交消息,因爲我們在內存中要跟蹤的內容要少得多。

Communications Timeout:指定消費者與 Kafka Broker 通信時應使用的超時時間。

3、運行nifi flow,查看ConsumeKafka處理器的溯源信息,如下圖所示:

 點擊view按鈕查看數據,如下圖所示:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章