初出茅廬的小李博客之用MQTT.fx軟件進行消息發布與訂閱【 基于EMQX Cloud】

MQTT.fx軟件使用簡單介紹

在這里插入圖片描述
MQTT.fx 的軟件界面如下圖所示,最上方為 MQTT Broker 連接地址欄,及其連接配置。其下方功能 Tabs 含有 Publish 發布欄、Subscribe 訂閱欄、Scripts 腳本欄、Broker Status 狀態消息欄、Log 日志信息控制欄。
在這里插入圖片描述

連接之前要明確幾個概念

以下概念僅供學習參考 ,個人理解 描述可能不嚴謹

概念1:什么是消息發布

我的個人理解 就是一個設備是作為信息提供的一方 也就是信息的生產者

概念2:什么是消息訂閱

我的個人理解 就是一個設備作為消息獲取的以防 也就是信息的消費者

概念3:什么是主題

我的個人理解 就是設備進行信息交互的平臺 可以類比公眾號我訂閱了某個公眾號那這個公眾號將來更新了文章我就可以閱讀,信息的消費者獲取信息的一個渠道,同時信息的生產者也可以把信息傳到上面供信息的消費者使用,這個公眾號就是一個轉發信息的橋梁

MQTT客戶端跟MQTT服務器都可以進行信息的發布

在這里插入圖片描述

MQTT客戶端一旦連接到服務端,便可以發布消息。 每條發布的MQTT消息必須包含一個主題。MQTT服務器可以通過主題確定將消息轉發給哪些客戶端。(注:這里的消息指的是MQTT報文。)

在建立通信前簡單提一下QoS(Quality of Service)QoS表示MQTT消息的服務質量等級。QoS有三個級別:0、1和2。QoS決定MQTT通訊有什么樣的服務保證。
QoS:發布消息的服務質量,即:保證消息傳遞的次數
00:最多一次,即:<=1
01:至少一次,即:>=1
10:一次,即:=1
11:預留

什么是報文標識符
報文標識符可用于對MQTT報文進行標識。不同的MQTT報文所擁有的標識符不同。MQTT設備可以通過該標識符對MQTT報文進行甄別和管理。請注意:報文標識符的內容與QoS級別有密不可分的關系。只有QoS級別大于0時,報文標識符才是非零數值。如果QoS等于0,報文標識符為0。這里不展開說 如果大家對這個協議感興趣大家可以看MQTT協議的詳細文檔
我這里簡單描述下
在MQTT協議中規定了一個固定報頭 固定報頭的第一個字節有8個bit
其中高4位的排列組合表示MQTT數據包的類型,
在這里插入圖片描述
總共4個bit 排列組合有16種情況 分別是以下類型

0 Reserved — 保留
1 CONNECT 客戶端到服務器 客戶端請求連接到服務器
2 CONNACK 服務器到客戶端 連接確認
3 PUBLISH 雙向 發布消息
4 PUBACK 雙向 發布確認
5 PUBREC 雙向 發布收到(保證第1部分到達)
6 PUBREL 雙向 發布釋放(保證第2部分到達)
7 PUBCOMP 雙向 發布完成(保證第3部分到達)
8 SUBSCRIBE 客戶端到服務器 客戶端請求訂閱
9 SUBACK 服務器到客戶端 訂閱確認
10 UNSUBSCRIBE 客戶端到服務器 請求取消訂閱
11 UNSUBACK 服務器到客戶端 取消訂閱確認
12 PINGREQ 客戶端到服務器 PING請求
13 PINGRESP 服務器到客戶端 PING應答
14DISCONNECT 客戶端到服務器 中斷連接
15Reserved — 保留

Qos 就是PUBLIS 數據包的低4位的bit2 bit1 其他數據包這兩位有其他的含義或者保留
在這里插入圖片描述

保留標志的理解

在默認情況下,當客戶端訂閱了某一主題后,并不會馬上接收到該主題的信息。只有在客戶端訂閱該主題后,服務端接收到該主題的新信息時,服務端才會將最新接收到的該主題信息推送給客戶端。
但是在有些情況下,我們需要客戶端在訂閱了某一主題后馬上接收到一條該主題的信息。這時候就需要用到保留標志這一信息。

有效載荷的理解

有效載荷是我們希望通過MQTT所發送的實際內容。我們可以使用MQTT協議發送文本,圖像等格式的內容。這些內容都是通過有效載荷所發送的。

重發標志的理解

當MQTT報文的接收方沒有及時確認收到報文時,發送方會重復發送MQTT報文。在重復發送MQTT報文時,發送方會將此“重發標志”設置為true。請注意,重發標志只在QoS級別大于0時使用。因為大于0 表示 【01】:至少一次,即:>=1 【10】:一次,即:=1

連接設置可以參考我上一篇博客

這里已經連接成功
在這里插入圖片描述

訂閱/發送消息
完成連接的建立之后,即可開始訂閱消息。因為 MQTT 協議采用的是訂閱/推送的方式,所以我們需要在連接之后訂閱主題,之后主題上有消息產生即可收到來自 EMQX Cloud 推送。

我在 EMQX Clouds 開啟了數據功能
在這里插入圖片描述
這里的操作需要用到SQL 語言 我不太了解 就用示例的幾個例子進行了簡單的配置

具體配置如下
在這里插入圖片描述
我的理解是當客戶端 建立了對這個主題的連接時候會觸發一個事件 這個事件會觸發一個消息
消息是JSON 格式

訂閱主題

訂閱兩個主題:

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

向某個主題發布消息

這是向AQST/TEST 發布的消息
在這里插入圖片描述
這是收到AQST/TEST 發布的消息
在這里插入圖片描述
這是向t/a這個主題發布的消息
在這里插入圖片描述
這是訂閱了t/a這個主題收到的消息
在這里插入圖片描述
至此:
兩個主題的訂閱跟發布都測試通過了
看一下后臺數據記錄,連接數最多就是1 訂閱最多是2 報文流量根據發送的信息數據量也不一樣。

連接數含義
連接數圖表展示了在選擇時間段內,連接到部署的客戶端的數量。這里連接的客戶端數也包含了保留會話的離線客戶端。保留會話,即客戶端斷開連接時,會話仍然保持并保存離線消息,直到會話超時注銷。

訂閱數含義
訂閱數圖表展示在選擇的時間段內部署的總訂閱數

總流量含義:接收和發送消息的報文總量。
接受報文流量:從設備或應用端發送到部署的消息的報文總量。
發送報文流量:從部署發送到設備或應用端的消息的報文總量。

消息流入流出含義
消息流入流出圖表展示在選擇的時間段內,部署接收到的消息數、發送出去的消息數和未被訂閱的消息數。
部署接收到的消息為從設備或應用端發送到部署的消息數。
部署發送的消息為從部署發送到設備或應用端的消息

報文流量含義
報文流量圖表展示在選擇的時間段內,部署接收到的消息以及發送出去的消息報文流量,包含以下3種數據:

在這里插入圖片描述
丟棄消息
丟棄消息圖表顯示在所選時間段內發送階段丟棄的消息。消息被丟棄的原因可能是報文太大、消息隊列已滿或消息過期。

好了、之所以用MQTT.fx軟件進行消息發布與訂閱是為了測試消息發布跟訂閱的流程,明確主題、訂閱、發布的概念,當然MQTT協議內容很多,后續會考慮用ESP32 當作MQTT客戶端進行數據的通信測試。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15091.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15091.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15091.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux系列】軟鏈接使用

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

深入編程邏輯:從分支到循環的奧秘

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、編程邏輯的基石&#xff1a;分支與循環 分支邏輯詳解 代碼案例&#xff1a;判斷整數是…

函數的拓展

7.1.1 基本用法 在ES6之前&#xff0c;不能直接為函數的參數指定默認值&#xff0c;只能采用變通的方法。 function log(x.y){ y y || Worldl console.log(x,y); }log(hello) //hello World log(hello,Chine) //hello Chine log(hello,) //hello World上面的代碼檢查函數…

UE5 雙手握劍的實現(逆向運動學IK)

UE5 雙手握劍的實現 IK 前言 什么是IK&#xff1f; UE官方給我們提供了很多對于IK處理的節點&#xff0c;比如ABRIK、Two Bone IK、Full Body IK 、CCD IK等&#xff0c;但是看到這&#xff0c;很多人就好奇了&#xff0c;什么是IK&#xff1f; 首先我們來看看虛幻小白人的骨…

[圖解]產品經理創新之阿布思考法

0 00:00:00,000 --> 00:00:01,900 那剛才我們講到了 1 00:00:02,730 --> 00:00:03,746 業務序列圖 2 00:00:03,746 --> 00:00:04,560 然后怎么 3 00:00:05,530 --> 00:00:06,963 畫現狀&#xff0c;怎么改進 4 00:00:06,963 --> 00:00:09,012 然后改進的模式…

【Spring Security + OAuth2】授權

Spring Security OAuth2 第一章 Spring Security 快速入門 第二章 Spring Security 自定義配置 第三章 Spring Security 前后端分離配置 第四章 Spring Security 身份認證 第五章 Spring Security 授權 第六章 OAuth2 文章目錄 Spring Security OAuth21、基于request的授權1…

一條命令安裝Metasploit Framework

做安全滲透的人都或多或少的使用kali-Linux系統中msfconsole命令啟動工具&#xff0c;然而也經常會有人遇到這樣那樣的問題無法啟動 今天我們就用一條命令來重新安裝這個工具 curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/met…

AI學習AI知識路線

數學基礎 一、數據分析 二、概率論 三、線性代數及矩陣 l 數學基礎 1)常數e2)導數3)梯度 4)Taylor5)gini系數6)信息熵與組合數 1)概率論基礎2)古典模型3)常見概率分布 4)大數定理和中心極限定理5)協方差(矩陣)和相關系數 6)最大似然估計和最大后驗估計 1)線性空間及線性變…

Windows內核--內存區對象(Section Object)(5.2)

內存區對象 Section Object表示可以共享的內存段。進程可以使用Section與其他進程共享其部分內存地址空間. Section還可為進程提供將文件映射到其內存地址空間的機制。 Linux有mmap與之類似。 參考: Section Objects and Views 內存區對象是虛擬描述符表VAD節點的一種 VAD樹節點…

LabVIEW如何確保自動化設備的穩定性和可靠性?

為了確保LabVIEW在自動化設備中的穩定性和可靠性&#xff0c;可以采取以下關鍵措施&#xff1a; 1. 代碼架構與設計 模塊化設計&#xff1a;將程序分解為獨立的模塊或子VI&#xff0c;每個模塊負責特定功能&#xff0c;便于測試和維護。狀態機架構&#xff1a;使用狀態機架構…

zookeeper選主之LeaderLatch

概述 利用zookeeper來進行選主&#xff0c;可以使用apache curator framework&#xff0c;它給我們封裝了兩種選主工具&#xff0c;它們分別是LeaderSelector和LeaderLatch。它們各自的應用場景不一樣&#xff0c;LeaderSelector應用于那些需要頻繁變主的情況&#xff0c;而Le…

Redis機制-Redis互斥鎖、分布式鎖

目錄 一 互斥鎖 二 分布式鎖 Redis實現分布式鎖 redisson實現分布式鎖 可重入性&#xff1a; 主從一致性&#xff08;性能差&#xff09;&#xff1a; 一 互斥鎖 假設我們現在有一個業務要實現秒殺優惠券的功能&#xff0c;如果是一個正常的流程&#xff0c;線程之間應該…

數據結構中鏈表的題目

題目&#xff1a; 設計一個算法&#xff0c;要求將鏈表中所有節點的鏈接方向“原地”逆轉&#xff0c;即要求僅利用原表的存儲空間。 對于這個問題&#xff0c;首先要分析的是&#xff1a;鏈表中的頭和尾節點如何插入&#xff1f;其次就是&#xff1a;如何鏈接&#xff1f; 搞懂…

閱讀筆記——《未知協議狀態機推斷技術研究綜述》

【參考文獻】盛嘉杰, 牛勝杰, 陳陽, 等. 未知協議狀態機推斷技術研究綜述[J]. 計算機與現代化, 2023 (05): 58.【注】本文僅為作者個人學習筆記&#xff0c;如有冒犯&#xff0c;請聯系作者刪除。 摘要 協議逆向工程&#xff08;PRE&#xff09;描述了協議的行為邏輯&#xff…

spring cloud config server源碼學習(一)

文章目錄 1. 注解EnableConfigServer2. ConfigServerAutoConfiguration2.1 ConditionalOnBean和ConditionalOnProperty2.2 Import注解2.2.1. EnvironmentRepositoryConfiguration.class2.2.2. CompositeConfiguration.class2.2.3. ResourceRepositoryConfiguration.class2.2.4.…

python3 + selenium webdriver自動化測試啟動不同瀏覽器

selenium webdriver自動化測試啟動不同瀏覽器 selenium webdriver 介紹Selenium WebDriver 進行自動化測試的一般流程瀏覽器驅動下載瀏覽器驅動的安裝chrome、edge、Firefox、Opera、Safari、phantomjs 應用Headless Chrome 、Headless Firefox 應用 selenium webdriver 介紹 …

shell命令運行原理及Linux權限問題

目錄 shell命令以及運行原理用戶管理添加用戶刪除用戶sudo Linux權限的概念Linux權限管理文件訪問者的分類&#xff08;人&#xff09;文件類型和訪問權限&#xff08;事物屬性&#xff09;文件權限值的表示方法文件訪問權限的相關設置方法 目錄的權限粘滯位 shell命令以及運行…

備考AMC8和AMC10競賽,吃透2000-2024年1850道真題和解析(持續)

多做真題&#xff0c;吃透真題和背后的知識點是備考AMC8、AMC10有效的方法之一&#xff0c;通過做真題&#xff0c;可以幫助孩子找到真實競賽的感覺&#xff0c;而且更加貼近比賽的內容&#xff0c;可以通過真題查漏補缺&#xff0c;更有針對性的補齊知識的短板。 今天我們繼續…

PostgreSQL基本使用Schema

參考文章&#xff1a;PostgreSQL基本使用&#xff08;3&#xff09;Schema_pg數據庫查詢schema-CSDN博客 PostgreSQL 模式&#xff08;Schema&#xff09;可以理解為是一個表的集合&#xff08;或者所屬者&#xff09;。 例如&#xff1a;在 MySQL 中&#xff0c;Scheam 是庫&…

gcc源碼分析(AST抽象語法樹)

文章目錄 三、AST相關1、AST(抽象語法樹)1.1 樹結點的聲明1.2 樹結點的結構1.2.1 tree_node聯合體1.2.2 tree_base結構體1.2.3 tree_common結構體1.2.4 常量結構體1.2.5 **標識符節點**2、符號綁定,作用域與block樹節點2.1 lang_identifier結構體2.2 c_binding結構體2.3 scop…