kettle從入門到精通 第五十三課 ETL之kettle MQTT/RabbitMQ consumer實戰

慕容尘轩發表於2024-04-21

1、上一節課我們學習了MQTT producer 生產者步驟,MQTT consumer消費者步驟。該步驟可以從支援MRQTT協議的中介軟體獲取資料,該步驟和kafka consumer 一樣可以處理實時資料互動,如下圖所示:

2、雙擊步驟開啟MQTT consumer 配置視窗,如下圖所示:

Step name:自定義步驟名稱。

Transformation:設定子轉換,該子轉換的作用是從中介軟體讀取流資料,然後將欄位返回給MQTT consumer步驟進行使用。

Connection:指定此步驟將連線的 MQTT 伺服器的地址,如127.0.0.1:1883(注意這裡的埠是1883,不是5672

Client ID:指定 MQTT 客戶端的唯一 ID。MQTT 伺服器使用此客戶端 ID 來識別每個不同的客戶端及其當前狀態。

Topics name:在主題名稱欄位中,輸入您希望訂閱流資料(訊息)的 MQTT 主題的名稱。其實這裡的topic是RabbitMQ中的routing key(另外這裡的routing key 一定不要繫結佇列,否則MQTT consumer步驟無法接收資料)。

Quality of Service:是訊息傳遞的保證級別。選擇以下選項之一。
至多一次(0),這是預設值
至少一次(1)
恰好一次(2)

3、安全驗證設定,如下圖所示:

Username:MQTT伺服器的使用者名稱,如admin

Password:MQTT伺服器的密碼。

Use secure protocol:選擇此選項以定義連線的 SSL 屬性,本次不做介紹。

3、批次設定,使用此選項卡來指定在處理之前要拉取多少訊息。您可以指定訊息數量和/或特定的時間量。

Duration(ms):
請指定一個以毫秒為單位的時間。此值表示在執行轉換之前該步驟將花費多少時間來收集記錄。
如果將此選項設定為0,則根據引數Number of records記錄數觸發消費。要執行轉換,持續時間或記錄數選項都必須包含一個大於0的值。

Number of records
指定一個數字。在每收集到‘X’條記錄之後,指定的轉換將被執行,並且這些‘X’條記錄將被傳遞給轉換過程。
如果將此選項設定為0,則將引數Duration按持續時間觸發消費。為了執行轉換,持續時間或記錄數選項都必須包含一個大於0的值。

Maximum concurrent batches

指定用於同時收集記錄的最大批次數。預設值為1,表示使用單個批次來收集記錄。僅當您的消費者步驟無法跟上資料流的速度時,才應使用此選項。
您的計算環境必須具備足夠的 CPU 和記憶體來進行此實現。如果您的環境無法處理指定的最大併發批次數,將會出現錯誤。


Message prefetch limit
請指定此步驟將排隊等待處理的傳入訊息的限制,即從 kfakfa broker接收到的訊息。
設定此值會強制kafka broker處理超過指定限制的訊息的背壓。預設排隊訊息的數量是100000條。

4、欄位設定,這裡採用預設值就行了,不用調整。

5、子轉換結果欄位設定,選擇子轉換返回資料的步驟。

6、同上一節課,本次不再介紹。

7、子轉換配置,將Get records from stream步驟拉到畫布,然後填寫Message、Topic兩個欄位,型別都是設定為String即可。

相關文章