轉 【MQTT】在Windows下搭建MQTT伺服器

來源:互聯網
上載者:User

標籤:1.7   層級   2017年   命令   use   設定檔   bsp   重複   輸出   

MQTT簡介

MQ 遙測傳輸 (MQTT) 是輕量級基於代理的發布/訂閱的訊息傳輸協議,設計思想是開放、簡單、輕量、易於實現。這些特點使它適用於受限環境。該協議的特點有:

  • 使用發布/訂閱訊息模式,提供一對多的訊息發布,解除應用程式耦合。
  • 對負載內容屏蔽的訊息傳輸。
  • 使用 TCP/IP 提供網路連接。
  • 小型傳輸,開銷很小(固定長度的頭部是 2 位元組),協議交換最小化,以降低網路流量。
  • 使用 Last Will 和 Testament 特性通知有關各方用戶端異常中斷的機制。
  • 有三種訊息發布服務品質: 
    • “至多一次”,訊息發布完全依賴底層 TCP/IP 網路。會發生訊息丟失或重複。這一層級可用於如下情況,環境感應器資料,丟失一次讀記錄無所謂,因為不久後還會有第二次發送。
    • “至少一次”,確保訊息到達,但訊息重複可能會發生。
    • “只有一次”,確保訊息到達一次。這一層級可用於如下情況,在計費系統中,訊息重複或丟失會導致不正確的結果。
 

Mosquitto是一款「An Open Source MQTT v3.1/v3.1.1 Broker」——開源的MQTTProxy 伺服器,其下也有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伺服器步驟:

  1. 下載Apollo伺服器並解壓,在CMD環境運行其工作目錄下的...\bin\apollo.cmd,命令後面帶上參數「create mybroker」,建立伺服器執行個體。這裡需要Java環境,系統內容變數下要有JAVA_HOME。
  2. 建立執行個體之後會在bin目錄下產生mybroker檔案夾,其中 ...\etc\apollo.xml檔案下是設定管理員資訊的檔案,...\etc\users.properties檔案包含串連MQTT伺服器時用到的使用者名稱和密碼,初始預設帳號是admin,密碼password;
  3. 進入...\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

  

 

用戶端代碼清單

下面是MQTT用戶端代碼清單

import paho.mqtt.client as mqttdef 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_connectclient.on_message = on_messageHOST = "127.0.0.1"client.connect(HOST, 61613, 60)client.loop_forever()

  

 

 

下面是往M

發布訊息代碼

QTT伺服器發布訊息的代碼

import paho.mqtt.publish as publishHOST = "127.0.0.1"publish.single("lettuce", "payload", hostname=HOST, port=61613,               auth={‘username‘: "admin", ‘password‘:"password"})

  

.

 

更新

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伺服器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.