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

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

1、MQTT介紹

MQTT (Message Queuing Telemetry Transport) 是一種輕量級的訊息傳輸協議,設計用於連線低頻寬、高延遲或不可靠網路的裝置。

MQTT 是基於釋出/訂閱模式(Publish/Subscribe)的協議,其中裝置可以釋出訊息到一個主題(Topic),其他裝置可以訂閱這個主題以接收相關訊息。這種模式使得裝置之間可以進行靈活的通訊,而不需要直接連線到彼此。

常見的支援支援MQTT的中介軟體有RabbitMQ和ActiveMQ。

2、今天我們基於RabbitMQ來進行學習下MQTT 生產者,如下圖所示:

3、透過步驟【生成記錄】生成10條記錄,記錄中有一個message欄位,型別為String字串,message的值為我是java小金剛,如下圖所示:

4、透過步驟【MQTT producer】將message值推送到RabbitMQ中供其他應用消費。

Step name:自定義步驟名稱

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

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

Specify topic:選擇“指定topic”以輸入特定的主題名稱,靜態指定。

Get data from field:動態指定topic。

Topic name:在主題名稱欄位中,輸入您希望釋出流資料(訊息)的 MQTT 主題的名稱。每個 MQTT 生產者步驟將啟動一個單獨的執行緒進行釋出。

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

Message field:設定訊息欄位,來源於前置步驟,下拉選擇需要的欄位。

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

Password:MQTT伺服器的秘密。

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

Keep Alive Interval:指定在 PDI 客戶端完成傳輸一個控制資料包和開始傳輸下一個資料包之間允許經過的最大間隔秒數。

Max Inflight:指定在任何給定時間點處理中的最大訊息數量。

Connection Timeout:指定在未收到訊息時斷開連線的時間,以秒為單位。

Clean Session:指定broker是否會儲存或清除會話的訊息。請選擇以下之一。

True
當設定為 True 時,經紀人不會儲存客戶端的任何資訊。所有來自先前持久會話的資訊都將被清除。
False
當設定為 False 時,經紀人將儲存客戶端的所有訂閱。當 QoS(服務質量)引數設定為 1 或 2 時,所有未接收的訊息將被儲存。

Storage Level:訊息是儲存在記憶體中還是在磁碟上的。

預設(留空)是記憶體。
對於磁碟,請輸入有效路徑。

Server URIs:指定 MQTT 伺服器的統一資源識別符號(URI),如mqtt://example.com:1883

MQTT Version:請指定此步驟連線到的 MQTT 協議版本,如MQTT 3.1.1

Automatic Reconnect:客戶端在與伺服器斷開連線時嘗試自動重新連線。請選擇 True 或 False:

True
是,嘗試重新連線到伺服器。
False
否,不嘗試重新連線到伺服器。

5、RabbitMQ MQTT協議配置,

1)需要先安裝然RabbitMQ。

2)啟用MQTT外掛,透過命令rabbitmq-plugins enable rabbitmq_mqtt進行啟動。

3)開啟成功後,檢視管理控制檯,我們可以發現MQTT服務執行在1883埠上了。

6、spoon中執行轉換檔案,此時發現RabbitMQ中已經成功寫入資料,如下圖所示:

相關文章