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

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中已經成功寫入數據,如下圖所示:

 

 

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