由於近期公司需要搭建一套物聯網采集環境,底層設備采用MQTT協議傳輸數據。服務器環境為linux,考慮到現有環境已經有RabbitMQ環境,Rabbit是基於AMQP協議開發的一套高效的消息傳輸隊列。心想Rabbit是否也支持MQTT呢,百度一番果然有收獲,Rabbit集成了MQTT環境只需要幾句命令就可以完成擴展。
RabbitMQ 默認關閉MQTT 協議,需用命令手動擴展,RabbitMQ 的MQTT 協議分為兩種。
-
rabbitmq_mqtt 提供與后端服務交互使用,端口1883
-
rabbitmq_web_mqtt 提供與前端交互使用,端口15675
使用rabbit自帶的控制台輸入命令,這樣方便點。也可以用windows cd到rabbit目錄敲命令。
輸入以下命令
rabbitmq-plugins enable rabbitmq_mqtt 開啟 rabbitmq_mqtt 對應端口 1883
rabbitmq-plugins enable rabbitmq_web_mqtt 開啟 rabbitmq_web_mqtt 對應端口 15675
開啟成功后這時,MQTT服務就搭建好了。現在可以測試,MQTT通訊了。使用rabbit 作為MQTT服務的話,需要創建 topic類型的交換機。交換機名作為訂閱和發布消息的Topic
創建一個名為MQTT的交換機,類型為Topic很重要。
這時服務端就創建好了,現在我們再開啟兩個客戶端進行消息傳輸。我這里用的時MQTTX工具測試。
賬號密碼就是Rabbit的登錄賬號密碼,其余參數默認就可以連接。連接成功后就可以發送消息了。 法送消息時記得填寫交換機名我這里交換機名為MQTT
這是打開我的MQTT訂閱客戶端,就可以接收到消息了。
這樣就完成了整個通訊流程,我基於.net5 開發了一套MQTT客戶端,后續給大家分享下。