Mqtt開發筆記:Mqtt服務器搭建

若該文爲原創文章,未經容許不得轉載 原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客導航:http://www.javashuo.com/article/p-wxwjppoc-mo.html
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106539703 各位讀者,知識無窮而人力有窮,要麼改需求,要麼找專業人士,要麼本身研究
紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬結合等等)持續更新中…(點擊傳送門)html

Qt開發專欄:開發技術(點擊傳送門)

Qt開發技術:mqtt介紹、QtMqtt編譯和開發環境搭建
Mqtt開發筆記:Mqtt服務器搭建java

<br>web

前話

  使用到mqtt服務器(中間件)。apache

<br>windows

MQTT協議

簡介

  MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),是一種基於發佈/訂閱(publish/subscribe)模式的"輕量級"通信協議,該協議構建於TCP/IP協議上,由IBM在1999年發佈。MQTT最大優勢在於,能夠以極少的代碼和有限的帶寬,爲鏈接遠程設備提供實時可靠的消息服務。做爲一種低開銷、低帶寬佔用的即時通信協議,使其在物聯網、小型設備、移動應用等方面有較普遍的應用。瀏覽器

設計原則

  • 精簡,不添加無關緊要的功能;
  • 發佈/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞;
  • 容許用戶動態建立主題,零運維成本;
  • 把傳輸量降到最低以提升傳輸效率;
  • 把低帶寬、高延遲、不穩定的網絡等因素考慮在內;
  • 支持連續的會話控制;
  • 理解客戶端計算能力可能很低;
  • 提供服務質量管理;
  • 假設數據不可知,不強求傳輸數據的類型與格式,保持靈活性。

特色

  1. 使用發佈/訂閱消息模式,提供一對多的消息發佈,解除應用程序耦合   這一點很相似於XMPP,可是MQTT的信息冗餘遠小於XMPP,,由於XMPP使用XML格式文原本傳遞數據。
  2. 對負載內容屏蔽的消息傳輸
  3. 使用TCP/IP提供網絡鏈接   主流的MQTT是基於TCP鏈接進行數據推送的,可是一樣有基於UDP的版本,叫作MQTT-SN。這兩種版本因爲基於不一樣的鏈接方式,優缺點天然也就各有不一樣了。
  4. 有三種消息發佈服務質量 "至多一次",消息發佈徹底依賴底層TCP/IP網絡。會發生消息丟失或重複。這一級別可用於以下狀況,環境傳感器數據,丟失一次讀記錄無所謂,由於不久後還會有第二次發送。這一種方式主要普通APP的推送,假若你的智能設備在消息推送時未聯網,推送過去沒收到,再次聯網也就收不到了。
    "至少一次",確保消息到達,但消息重複可能會發生。 "只有一次",確保消息到達一次。在一些要求比較嚴格的計費系統中,可使用此級別。在計費系統中,消息重複或丟失會致使不正確的結果。這種最高質量的消息發佈服務還能夠用於即時通信類的APP的推送,確保用戶收到且只會收到一次。
  5. 小型傳輸,開銷小   (固定長度的頭部是2字節),協議交換最小化,以下降網絡流量。很是適合"在物聯網領域,傳感器與服務器的通訊,信息的收集",嵌入式設備的運算能力和帶寬都相對薄弱,使用這種協議來傳遞消息再適合不過了。
  6. 客戶端異常中斷的機制。 Last Will:即遺言機制,用於通知同一主題下的其餘設備發送遺言的設備已經斷開了鏈接。 Testament:遺囑機制,功能相似於Last Will。

發佈/訂閱者模式

  MQTT是一個基於客戶端-服務器的消息發佈/訂閱傳輸協議。MQTT協議是輕量、簡單、開放和易於實現的,這些特色使它適用範圍很是普遍。 在不少狀況下,包括受限的環境中,如:機器與機器(M2M)通訊和物聯網(IoT)。其在,經過衛星鏈路通訊傳感器、偶爾撥號的醫療設備、智能家居、及一些小型化設備中已普遍使用。   在這裏插入圖片描述   從圖上MQTT有三種角色的存在:服務器

  • Broker代理:不少人理解爲中間件,固然能夠這樣子認爲。他就是一箇中間件。用於處理信息併發送到相應的訂閱者。
  • 發佈者:用於發佈信息到代理上面。注意:發佈者也能夠是訂閱者。
  • 訂閱者:就是用於接受信息的客戶端。

MQTT服務器

  MQTT服務器以稱爲"消息代理"(Broker),能夠是一個應用程序或一臺設備。它是位於消息發佈者和訂閱者之間,它能夠:網絡

  • 接受來自客戶的網絡鏈接;
  • 接受客戶發佈的應用信息;
  • 處理來自客戶端的訂閱和退訂請求;
  • 向訂閱的客戶轉發應用程序消息。

MQTT協議中的方法

  MQTT協議中定義了一些方法(也被稱爲動做),來於表示對肯定資源所進行操做。這個資源能夠表明預先存在的數據或動態生成數據,這取決於服務器的實現。一般來講,資源指服務器上的文件或輸出。主要方法有:併發

  • Connect:等待與服務器創建鏈接
  • Disconnect:等待MQTT客戶端完成所做的工做,並於服務器斷開TCP/IP會話
  • Subscribe:等待完成訂閱
  • UnSubscribe:等待服務器取消客戶端的一個活多個和topics訂閱
  • Publish:MQTT客戶端發送消息請求,發送完成後返回應用程序線程

<br>oracle

Windows上Apache Apoll環境搭建(mqtt)

下載Apache Apoll

  官方下載地址:https://activemq.apache.org/
  CSDN下載地址:https://download.csdn.net/download/qq21497936/11214539

安裝jdk

  官方下載地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
  CSDN下載地址:https://download.csdn.net/download/qq21497936/11214604
  下載系統對應的版本,windows x64位
   在這裏插入圖片描述   添加java路徑到系統Path變量
  JAVA_HOME

C:\Program Files\Java\jdk-12.0.1

  PATH(最後面加上)

;%JAVA_HOME%\bin\

  加粗樣式CLASSPATH

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

  使用cmd運行java命名,jdk環境配置成功,以下圖:
  在這裏插入圖片描述

安裝Apache Apoll

解壓

  將Apache Apoll解壓到C盤下(自定義),以下圖:
  在這裏插入圖片描述\

建立實例

  使用cmd進入該文件夾建立實例:

cd C:\apache-activemq-5.15.9
cd bin
activemq-admin.bat create mybroker

  在這裏插入圖片描述    在這裏插入圖片描述

查看登陸用戶名和密碼

  進入mybroker/conf,查看users.properties,能夠看到用戶名   在這裏插入圖片描述   在這裏插入圖片描述   查看tcp監聽端口(可自行修改,筆者不修改)      在這裏插入圖片描述   查看web管理頁面端口(可自行修改,筆者不修改)   在這裏插入圖片描述   在這裏插入圖片描述

運行apache apoll

cd C:\apache-activemq-5.15.9\bin\mybroker\bin
mybroker.bat start

  在這裏插入圖片描述   在這裏插入圖片描述    在這裏插入圖片描述

測試安裝

步驟一:打開ie(瀏覽器)

步驟二:輸入網址http://localhost:8161/admin

  在這裏插入圖片描述

步驟三:輸入admin,admin

  在這裏插入圖片描述

步驟四:建立隊列測試

  在這裏插入圖片描述   在這裏插入圖片描述   在這裏插入圖片描述   在這裏插入圖片描述

步驟五(補充):遠程管理

  在這裏插入圖片描述   至此windows server2008 r2系統上的apache apoll中間件環境以及服務成功搭建完成。

<br>

常見錯誤處理

鏈接時Qt返回錯誤碼257

  客戶端遇到協議違規,所以關閉了鏈接。 錯誤   檢查服務器報錯    在這裏插入圖片描述 緣由   ActiveMQ有時會報相似Frame size of 257 MB larger than max allowed 100 MB的錯誤,意思是單條消息超過了預設的最大值,在配置文件中

<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?
 maximumConnections=1000&amp;wireFormat.maxFrameSize=1048576000"/>

  咱們能夠配置這個值,可是有時會忽然出現很大的單條消息,好比1G。 分析   QtMqtt與服務鏈接,傳過去的屬性最大值多是258MB,因此直接修改服務器配置。 解決方法   重啓服務

<br>

原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客導航:http://www.javashuo.com/article/p-wxwjppoc-mo.html
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/106539703

相關文章
相關標籤/搜索