MQTT在Windows下搭建MQTT伺服器
MQTT 在Windows下搭建MQTT伺服器
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u012163234/article/details/52703946
MQTT簡介
MQ 遙測傳輸 (MQTT) 是輕量級基於代理的釋出/訂閱的訊息傳輸協議,設計思想是開放、簡單、輕量、易於實現。這些特點使它適用於受限環境。該協議的特點有:
- 使用釋出/訂閱訊息模式,提供一對多的訊息釋出,解除應用程式耦合。
- 對負載內容遮蔽的訊息傳輸。
- 使用 TCP/IP 提供網路連線。
- 小型傳輸,開銷很小(固定長度的頭部是 2 位元組),協議交換最小化,以降低網路流量。
- 使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制。
- 有三種訊息釋出服務質量:
- “至多一次”,訊息釋出完全依賴底層 TCP/IP 網路。會發生訊息丟失或重複。這一級別可用於如下情況,環境感測器資料,丟失一次讀記錄無所謂,因為不久後還會有第二次傳送。
- “至少一次”,確保訊息到達,但訊息重複可能會發生。
- “只有一次”,確保訊息到達一次。這一級別可用於如下情況,在計費系統中,訊息重複或丟失會導致不正確的結果。
前言
最近在專案中要使用MQTT協議,需要搭建一個MQTT伺服器來進行除錯,在網路上找了一天,找到的大多數都是MQTT客戶端,最後發現這篇部落格寫的教程可以使用,特此記錄。
尋找過程
在尋找MQTT伺服器的過程中,我發現的Mosquitto是一款「An Open Source MQTT v3.1/v3.1.1 Broker」——開源的MQTT代理伺服器,其下也有Windows的安裝包。
但是我使用的是Win10 64位系統,這兩個都下載安裝後不是報錯就是缺少dll檔案,不能使用。
最後參考了前面部落格說的,搭建了Apollo伺服器,這裡使用的Apollo 1.7.1。
- 官網:http://activemq.apache.org/index.html
- 下載地址:http://activemq.apache.org/apollo/download.html
- 快速開始教程:http://activemq.apache.org/apollo/documentation/getting-started.html
搭建MQTT伺服器
使用Apollo搭建MQTT伺服器步驟:
- 下載Apollo伺服器並解壓,在CMD環境執行其工作目錄下的
...\bin\apollo.cmd
,命令後面帶上引數「create mybroker
」,建立伺服器例項。這裡需要Java環境,系統環境變數下要有JAVA_HOME。 - 建立例項之後會在bin目錄下生成mybroker資料夾,其中
...\etc\apollo.xml
檔案下是配置伺服器資訊的檔案,...\etc\users.properties
檔案包含連線MQTT伺服器時用到的使用者名稱和密碼,初始預設帳號是admin,密碼password; - 進入
...\mybroker\bin\
目錄,在CMD輸入命令「apollo-broker.cmd run
」,可以使用TAB鍵自動補全,執行後輸出資訊如下:
其中我們要留意的:
MQTT伺服器TCP連線埠:tcp://0.0.0.0:61613
後臺Web管理頁面:https://127.0.0.1:61681/或http://127.0.0.1:61680/
登入伺服器後,如果MQTT伺服器有客戶端連線,後臺會顯示如下
Python的MQTT客戶端
在Python環境下有MQTT客戶端包——paho-mqtt。
安裝命令
pip install paho-mqtt
- 1
客戶端程式碼清單
下面是MQTT客戶端程式碼清單
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("lettuce")
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
client = mqtt.Client()
client.username_pw_set("admin", "password") # 必須設定,否則會返回「Connected with result code 4」
client.on_connect = on_connect
client.on_message = on_message
HOST = "127.0.0.1"
client.connect(HOST, 61613, 60)
client.loop_forever()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
釋出訊息程式碼
下面是往MQTT伺服器釋出訊息的程式碼
import paho.mqtt.publish as publish
HOST = "127.0.0.1"
publish.single("lettuce", "payload", hostname=HOST, port=61613,
auth={'username': "admin", 'password':"password"})
- 1
- 2
- 3
- 4
- 5
- 6
更新
2017年7月28日更新:
最近發現了一款比較好的開源MQTT伺服器:EMQ。Linux下部署教程可以參考這篇文章:EMQ初體驗——在CentOS7上部署MQTT伺服器
Windows下部署可以到官網查閱相關資料。
2017年8月15日更新:
注意:後臺Web管理頁面被設定為只能本地訪問,如果想用其他主機訪問該管理頁面,需要修改「http://127.0.0.1:61680/」為「http://0.0.0.0:61680/」。
相關配置檔案:apache-apollo-1.7.1\bin\mybroker\etc\apollo.xml,大約61行:
<web_admin bind="http://127.0.0.1:61680"/>
<web_admin bind="https://127.0.0.1:61681"/>
相關文章
- 【MQTT】在Windows下搭建MQTT伺服器MQQTWindows伺服器
- Windows下MQTT代理伺服器的搭建WindowsMQQT伺服器
- 在 Windows 上搭建 MQTT 訊息伺服器WindowsMQQT伺服器
- 配置 mqtt伺服器 ,laravel-mqttMQQT伺服器Laravel
- Mac MQTT server 搭建MacMQQTServer
- MQTT系列實踐二 在EGG中使用mqttMQQT
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- IoTDB透過MQTT儲存 windowsMQQTWindows
- MQTTMQQT
- 在 Azure AKS 上部署 EMQX MQTT 伺服器叢集MQQT伺服器
- 專案實戰-物聯網平臺搭建-mqtt伺服器搭建(一)MQQT伺服器
- 學習筆記:MQTT環境搭建筆記MQQT
- 在阿里雲 ACK 上部署 EMQX MQTT 伺服器叢集阿里MQQT伺服器
- Python MQTT客戶端 paho-mqttPythonMQQT客戶端
- 在 Flutter 專案中使用 MQTTFlutterMQQT
- MQTT 在 Elixir 中的應用MQQT
- MQTT 伺服器搭建:EMQ X 安裝指南和常見問題MQQT伺服器
- 在華為雲 CCE 上部署 EMQX MQTT 伺服器叢集MQQT伺服器
- 在騰訊雲 TKE 上部署 EMQX MQTT 伺服器叢集MQQT伺服器
- EMQ X 與 RabbitMQ 訊息伺服器 MQTT 效能對比(下)MQ伺服器QT
- 百萬級併發 之 MQTT 伺服器MQQT伺服器
- MQTT 伺服器安全性測試MQQT伺服器
- 使用 Helm 安裝 MQTT 伺服器-EMQXMQQT伺服器
- MQTT工作筆記0001---MQTT協議概述MQQT筆記協議
- 手把手搭建自己私有的MQTT伺服器,完成裝置上雲MQQT伺服器
- MQTT 實戰MQQT
- MQTT 與 KafkaMQQTKafka
- MQTT如何使用MQQT
- SpringBoot整合MQTTSpring BootMQQT
- 9-雲端安裝MQTT伺服器MQQT伺服器
- 在樹莓派中使用 MicroPython 接入 MQTT樹莓派PythonMQQT
- 在 AWS EKS 上部署 EMQX MQTT 叢集MQQT
- MQTT X Web:線上的 MQTT 5.0 客戶端工具MQQTWeb客戶端
- MQTT協議 paho.mqtt.golang keepAlive原始碼淺析MQQT協議Golang原始碼
- MQTT協議(二)MQQT協議
- MQTT之初體驗MQQT
- MQTT 快速入門MQQT
- MQTT使用踩坑MQQT