RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

對(duì)RyanMqtt的QOS消息質(zhì)量穩(wěn)定性進(jìn)行測(cè)試

冬至子 ? 來源:Ryan_CW ? 作者:Ryan_CW ? 2023-10-08 14:38 ? 次閱讀

測(cè)試環(huán)境:stm32F401RCT6、RT-Thread版本: v4.1.0、RT-Thread Studio版本: 2.2.6、網(wǎng)絡(luò)硬件使用ec800m移植at_socket使用sal框架。

1、測(cè)試介紹
我移植的這個(gè)at驅(qū)動(dòng)還不完善,頻繁發(fā)送消息時(shí)會(huì)導(dǎo)致網(wǎng)絡(luò)斷連,打開調(diào)試進(jìn)行一些延時(shí)就沒問題了。但是斷連的特性反而有助于我們進(jìn)行qos測(cè)試。

因?yàn)槲覀円獪y(cè)試斷網(wǎng)后qos消息質(zhì)量的穩(wěn)定性,所以 cleanSessionFlag(清除會(huì)話)必須為false
由于我們要測(cè)試中途被mqtt服務(wù)器踢掉后的效果,所以示例使用的我的mqtt服務(wù)器,您如果有興趣測(cè)試這個(gè)的話請(qǐng)修改配置信息為您的服務(wù)器

要測(cè)試的功能如下圖。都是發(fā)送20條消息。

1.jpg

2、測(cè)試發(fā)布QOS1 / QOS2消息
網(wǎng)絡(luò)正常情況發(fā)送,發(fā)送qos1消息
打印日志上面紅框表示RyanMqtt發(fā)布了多少條消息也就是 RyanMqttPublish 接口回復(fù)ok的次數(shù),下面表示真正完成發(fā)布了多少條

1.jpg

emqx截圖,可以看到是20條。但細(xì)心的你肯定發(fā)現(xiàn)了發(fā)送的信息居然不是按順序來的,這是因?yàn)閑mqx設(shè)置訂閱的qos2主題,實(shí)際顯示將會(huì)按照qos2完成時(shí)間來進(jìn)行顯示

1.jpg

網(wǎng)絡(luò)正常情況發(fā)送,發(fā)送qos2消息

1.jpg

2.jpg

模擬發(fā)送中途斷網(wǎng),發(fā)送qos1消息
這里模擬的意思是:發(fā)送第5條的時(shí)候把網(wǎng)絡(luò)硬件進(jìn)行關(guān)閉,發(fā)送第10條時(shí)啟動(dòng)網(wǎng)絡(luò)硬件,觀察發(fā)布消息和實(shí)際消息是否對(duì)得上號(hào)

1.jpg

看上面日志咱們發(fā)送了12條,emqx為什么會(huì)收到13條呢?
這就是qos1的特性了,允許至少一次的重復(fù)接收,咱們斷網(wǎng)重新連接的時(shí)候根據(jù)qos1的特性咱們是可以重新發(fā)送的。

1.jpg

模擬發(fā)送中途斷網(wǎng),發(fā)送qos2消息
這里模擬的意思是:發(fā)送第5條的時(shí)候把網(wǎng)絡(luò)硬件進(jìn)行關(guān)閉,發(fā)送第10條時(shí)啟動(dòng)網(wǎng)絡(luò)硬件,觀察發(fā)布消息和實(shí)際消息是否對(duì)得上號(hào)
這里我們就遇到了開頭說的ec800m驅(qū)動(dòng)問題,qos2需要較多的網(wǎng)絡(luò)交互,ec800直接罷工了。
但是等它重連后我們可以發(fā)現(xiàn),qos2的消息依然可以穩(wěn)定保證只有一次。(之前我自己進(jìn)行的測(cè)試要比這嚴(yán)謹(jǐn)?shù)亩?,?huì)考慮到多次斷網(wǎng)情況等)

1.jpg

2.jpg

模擬發(fā)送中途被踢,發(fā)送qos1消息
模擬中途被踢:發(fā)送20條,在中間的時(shí)候手動(dòng)通過mqtt管理后臺(tái)把RyanMqtt客戶端踢掉
這個(gè)測(cè)試真考驗(yàn)手速啊,試了4次才成功。
可以看到發(fā)送到15條的時(shí)候被mqtt服務(wù)器給踢掉了,等待重連后可以正常同步

1.jpg

2.jpg

模擬發(fā)送中途被踢,發(fā)送qos2消息
模擬中途被踢:發(fā)送20條,在中間的時(shí)候手動(dòng)通過mqtt管理后臺(tái)把RyanMqtt客戶端踢掉
可以看到發(fā)送了15條,但是收到了21條!是bug嗎?其實(shí)不然,這主要是emqx服務(wù)器的策略問題,因?yàn)槭侵鲃?dòng)剔除emqx服務(wù)器會(huì)清除會(huì)話上下文,導(dǎo)致qos2消息多接收。
所以說重大風(fēng)險(xiǎn)的環(huán)境,一定不要只依靠qos2,太多因素會(huì)導(dǎo)致意料之外的結(jié)果。一定要通過應(yīng)用層來保證最終一致性

1.jpg

2.jpg

2、測(cè)試訂閱QOS1 / QOS2消息
為了方便觀察效果,我們使用emqx的腳本功能,給所有發(fā)送消息尾部加一個(gè)0 - 1000的隨機(jī)值。方便觀察消息接收情況。
腳本如下

1.jpg

網(wǎng)絡(luò)正常情況接收,接收qos1消息

1.jpg

2.jpg

網(wǎng)絡(luò)正常情況接收,接收qos2消息

1.jpg

2.jpg

模擬接收中途斷網(wǎng),接收qos1消息
實(shí)驗(yàn)條件:使用mqttx上位機(jī)發(fā)布10條消息,RyanMqtt收到第5條后重啟網(wǎng)絡(luò)硬件,看聯(lián)網(wǎng)后是否可以接收到消息

1.jpg

2.jpg

模擬接收中途斷網(wǎng),接收qos2消息
實(shí)驗(yàn)條件:使用mqttx上位機(jī)發(fā)布10條消息,RyanMqtt收到第5條后重啟網(wǎng)絡(luò)硬件,看聯(lián)網(wǎng)后是否可以接收到消息

1.jpg

2.jpg

模擬接收中途被踢,接收qos1消息
模擬接收中途被踢,接收qos2消息
實(shí)驗(yàn)條件:我使用mqttx的自動(dòng)發(fā)送功能,一秒發(fā)一條。發(fā)送20條消息,當(dāng)發(fā)送5 - 10條后從emqx服務(wù)器剔除RyanMqtt客戶端

尷尬的發(fā)現(xiàn)沒法測(cè)試,上面測(cè)試發(fā)布消息剔除的時(shí)候說過emqx服務(wù)器的剔除會(huì)清除會(huì)話信息,清除后會(huì)話信息,雖然RyanMqtt依然保留著訂閱主題信息,但是emq服務(wù)器的訂閱信息不存在了。
所以不管有沒有使能clearSession,都非常推薦在連接成功回調(diào)函數(shù)中訂閱主題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接收機(jī)
    +關(guān)注

    關(guān)注

    8

    文章

    1180

    瀏覽量

    53453
  • 上位機(jī)
    +關(guān)注

    關(guān)注

    27

    文章

    941

    瀏覽量

    54790
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1285

    瀏覽量

    40080
  • STM32F401
    +關(guān)注

    關(guān)注

    1

    文章

    16

    瀏覽量

    10492
  • MQTT協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    97

    瀏覽量

    5362
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HarmonyOS應(yīng)用兼容穩(wěn)定性測(cè)試

    HAP 和 APP 兩種格式,如果未上傳應(yīng)用,請(qǐng)先從本地上傳一個(gè) HarmonyOS 應(yīng)用包。 ● 測(cè)試時(shí)長(zhǎng)設(shè)置:設(shè)置穩(wěn)定性測(cè)試測(cè)試時(shí)長(zhǎng)。 說明 每天只能
    發(fā)表于 12-25 10:56

    藥品穩(wěn)定性試驗(yàn)箱的作用

    、潮濕等環(huán)境下對(duì)新藥品進(jìn)行測(cè)試,也可以用作某些特殊需要恒定溫度和恒定濕度藥品的保存箱。藥品穩(wěn)定性保存  藥品穩(wěn)定性試驗(yàn)箱在功能結(jié)構(gòu)上包含了制冷系統(tǒng)、制熱系統(tǒng)、加濕系統(tǒng)等三個(gè)部分,這三個(gè)
    發(fā)表于 06-22 16:29

    瞬態(tài)穩(wěn)定性測(cè)試:注意步長(zhǎng)

    簡(jiǎn)單處理后,John 選擇了能達(dá)到 45 度相位裕度的 RISO 值,然后就可以在工作臺(tái)上進(jìn)行結(jié)果測(cè)試。如果您遇到了同樣的問題,那么需要小心。大部分在仿真中測(cè)試穩(wěn)定性的高級(jí)方法通常在工
    發(fā)表于 09-20 15:37

    如何測(cè)試電源設(shè)計(jì)的穩(wěn)定性測(cè)量

    產(chǎn)后期因環(huán)境變化和/或工作極限條件而變得不穩(wěn)定。在這些情況下,原型設(shè)計(jì)可能運(yùn)行良好,但電源內(nèi)的相位和增益裕度卻沒在原型測(cè)試中得到測(cè)試。如果設(shè)計(jì)人員能夠?qū)﹄娫吹?b class='flag-5'>穩(wěn)定性
    發(fā)表于 09-20 16:00

    LED燈具的性能及穩(wěn)定性測(cè)試

    穩(wěn)定性測(cè)試。費(fèi)思方案設(shè)備:電源:FTG系列電源。FTP系列電源(供電)負(fù)載:FT6100系列多通道電子負(fù)載,(用于分配個(gè)通道電流)實(shí)現(xiàn)原理:負(fù)載能夠精準(zhǔn)快速的控制回路中的電流,實(shí)現(xiàn)恒流輸出。并且可以實(shí)現(xiàn)
    發(fā)表于 12-07 15:00

    開關(guān)電源穩(wěn)定性測(cè)試 開關(guān)電源穩(wěn)定性

    測(cè)出來的結(jié)果是不準(zhǔn)確的。 圖 3 FRA測(cè)量時(shí)注入電阻的位置及接線 四、開關(guān)電源穩(wěn)定性測(cè)試舉例:在了解影響產(chǎn)品穩(wěn)定性的因素和判定準(zhǔn)則以及怎樣來檢測(cè)產(chǎn)品后,就可以對(duì)所測(cè)的產(chǎn)品的結(jié)果進(jìn)行
    發(fā)表于 12-24 18:35

    如何測(cè)試LWIP通信穩(wěn)定性和速率?

    原子哥你好:我咨詢下您,用STM32移植LWIP的話,就你的經(jīng)驗(yàn)。穩(wěn)定性好不好?我發(fā)送大一點(diǎn)的數(shù)據(jù)包。比喻我不斷發(fā)送1500Byte左右的數(shù)據(jù)包。用tcp調(diào)試助手接收。這個(gè)通信 速率您測(cè)試過沒有呢?會(huì)不會(huì)不穩(wěn)定?。课业哪康氖窍胗?/div>
    發(fā)表于 07-12 04:36

    運(yùn)放穩(wěn)定性的標(biāo)準(zhǔn)及測(cè)試

    運(yùn)放穩(wěn)定性的標(biāo)準(zhǔn)及測(cè)試環(huán)路增益穩(wěn)定性舉例
    發(fā)表于 04-06 06:30

    服務(wù)器穩(wěn)定性測(cè)試方法

    ,如果要進(jìn)行香港服務(wù)器測(cè)試就要針對(duì)你放置網(wǎng)站的每個(gè)細(xì)節(jié)和功能全面的操作測(cè)試,根據(jù)每個(gè)功能操作下的不同性能來測(cè)試。2、多線路測(cè)試在對(duì)香港服務(wù)器
    發(fā)表于 09-20 09:56

    RyanMqtt實(shí)現(xiàn)MQTT3.1.1協(xié)議的客戶端

    使用,作者不對(duì)使用此庫(kù)造成的任何經(jīng)濟(jì)損失負(fù)責(zé)。(盡管此庫(kù)QOS2消息等級(jí)經(jīng)過很多測(cè)試,但是異步組件由于諸多因素例如波動(dòng)非常大的網(wǎng)絡(luò)甚至無法建立穩(wěn)定的tcp連接、mqtt服務(wù)端的策略配置等,無法做到絕對(duì)的實(shí)時(shí)性,需要用戶手動(dòng)做到數(shù)
    發(fā)表于 12-01 15:19

    如何測(cè)試ERP系統(tǒng)的穩(wěn)定性

    一個(gè)軟件的穩(wěn)定性對(duì)企業(yè)的工作產(chǎn)生著重要的影響,ERP系統(tǒng)如果在使用過程中安全性出現(xiàn)問題的,可能會(huì)導(dǎo)致數(shù)據(jù)的缺失,這將會(huì)影響決策。那么如何測(cè)試ERP系統(tǒng)的穩(wěn)定性呢?下面一起來了解一下吧! 測(cè)試
    發(fā)表于 05-13 17:00 ?1032次閱讀

    電源測(cè)試穩(wěn)定性測(cè)量

    電源測(cè)試穩(wěn)定性測(cè)量
    發(fā)表于 11-07 08:07 ?7次下載
    電源<b class='flag-5'>測(cè)試</b>:<b class='flag-5'>穩(wěn)定性</b>測(cè)量

    如何保證電源適配器的質(zhì)量穩(wěn)定性?

    如何保證電源適配器的質(zhì)量穩(wěn)定性? 要保證電源適配器的質(zhì)量穩(wěn)定性,需要從設(shè)計(jì)、制造、測(cè)試和驗(yàn)收等多個(gè)環(huán)節(jié)入手,以下是詳細(xì)的措施: 1. 設(shè)
    的頭像 發(fā)表于 11-23 16:04 ?1058次閱讀

    如何測(cè)試DDR內(nèi)存的穩(wěn)定性

    工具,可以對(duì)內(nèi)存進(jìn)行全面的穩(wěn)定性測(cè)試。 操作:通過運(yùn)行MemTest86,軟件會(huì)對(duì)內(nèi)存進(jìn)行多種復(fù)雜運(yùn)算,從而檢測(cè)出內(nèi)存可能存在的錯(cuò)誤。 注意事項(xiàng):測(cè)
    的頭像 發(fā)表于 11-29 15:01 ?428次閱讀

    如何測(cè)試晶振的穩(wěn)定性

    以下是一些常用的方法來測(cè)試晶振的穩(wěn)定性。
    的頭像 發(fā)表于 11-29 16:41 ?217次閱讀
    RM新时代网站-首页