0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对RyanMqtt的QOS消息质量稳定性进行测试

冬至子 来源:Ryan_CW 作者:Ryan_CW 2023-10-08 14:38 次阅读

测试环境:stm32F401RCT6、RT-Thread版本: v4.1.0、RT-Thread Studio版本: 2.2.6、网络硬件使用ec800m移植at_socket使用sal框架。

1、测试介绍
我移植的这个at驱动还不完善,频繁发送消息时会导致网络断连,打开调试进行一些延时就没问题了。但是断连的特性反而有助于我们进行qos测试。

因为我们要测试断网后qos消息质量的稳定性,所以 cleanSessionFlag(清除会话)必须为false
由于我们要测试中途被mqtt服务器踢掉后的效果,所以示例使用的我的mqtt服务器,您如果有兴趣测试这个的话请修改配置信息为您的服务器

要测试的功能如下图。都是发送20条消息。

1.jpg

2、测试发布QOS1 / QOS2消息
网络正常情况发送,发送qos1消息
打印日志上面红框表示RyanMqtt发布了多少条消息也就是 RyanMqttPublish 接口回复ok的次数,下面表示真正完成发布了多少条

1.jpg

emqx截图,可以看到是20条。但细心的你肯定发现了发送的信息居然不是按顺序来的,这是因为emqx设置订阅的qos2主题,实际显示将会按照qos2完成时间来进行显示

1.jpg

网络正常情况发送,发送qos2消息

1.jpg

2.jpg

interwetten与威廉的赔率体系 发送中途断网,发送qos1消息
这里模拟的意思是:发送第5条的时候把网络硬件进行关闭,发送第10条时启动网络硬件,观察发布消息和实际消息是否对得上号

1.jpg

看上面日志咱们发送了12条,emqx为什么会收到13条呢?
这就是qos1的特性了,允许至少一次的重复接收,咱们断网重新连接的时候根据qos1的特性咱们是可以重新发送的。

1.jpg

模拟发送中途断网,发送qos2消息
这里模拟的意思是:发送第5条的时候把网络硬件进行关闭,发送第10条时启动网络硬件,观察发布消息和实际消息是否对得上号
这里我们就遇到了开头说的ec800m驱动问题,qos2需要较多的网络交互,ec800直接罢工了。
但是等它重连后我们可以发现,qos2的消息依然可以稳定保证只有一次。(之前我自己进行的测试要比这严谨的多,会考虑到多次断网情况等)

1.jpg

2.jpg

模拟发送中途被踢,发送qos1消息
模拟中途被踢:发送20条,在中间的时候手动通过mqtt管理后台把RyanMqtt客户端踢掉
这个测试真考验手速啊,试了4次才成功。
可以看到发送到15条的时候被mqtt服务器给踢掉了,等待重连后可以正常同步

1.jpg

2.jpg

模拟发送中途被踢,发送qos2消息
模拟中途被踢:发送20条,在中间的时候手动通过mqtt管理后台把RyanMqtt客户端踢掉
可以看到发送了15条,但是收到了21条!是bug吗?其实不然,这主要是emqx服务器的策略问题,因为是主动剔除emqx服务器会清除会话上下文,导致qos2消息多接收。
所以说重大风险的环境,一定不要只依靠qos2,太多因素会导致意料之外的结果。一定要通过应用层来保证最终一致性

1.jpg

2.jpg

2、测试订阅QOS1 / QOS2消息
为了方便观察效果,我们使用emqx的脚本功能,给所有发送消息尾部加一个0 - 1000的随机值。方便观察消息接收情况。
脚本如下

1.jpg

网络正常情况接收,接收qos1消息

1.jpg

2.jpg

网络正常情况接收,接收qos2消息

1.jpg

2.jpg

模拟接收中途断网,接收qos1消息
实验条件:使用mqttx上位机发布10条消息,RyanMqtt收到第5条后重启网络硬件,看联网后是否可以接收到消息

1.jpg

2.jpg

模拟接收中途断网,接收qos2消息
实验条件:使用mqttx上位机发布10条消息,RyanMqtt收到第5条后重启网络硬件,看联网后是否可以接收到消息

1.jpg

2.jpg

模拟接收中途被踢,接收qos1消息
模拟接收中途被踢,接收qos2消息
实验条件:我使用mqttx的自动发送功能,一秒发一条。发送20条消息,当发送5 - 10条后从emqx服务器剔除RyanMqtt客户端

尴尬的发现没法测试,上面测试发布消息剔除的时候说过emqx服务器的剔除会清除会话信息,清除后会话信息,虽然RyanMqtt依然保留着订阅主题信息,但是emq服务器的订阅信息不存在了。
所以不管有没有使能clearSession,都非常推荐在连接成功回调函数中订阅主题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接收机
    +关注

    关注

    8

    文章

    1181

    浏览量

    53475
  • 上位机
    +关注

    关注

    27

    文章

    942

    浏览量

    54814
  • RT-Thread
    +关注

    关注

    31

    文章

    1289

    浏览量

    40131
  • STM32F401
    +关注

    关注

    1

    文章

    16

    浏览量

    10496
  • MQTT协议
    +关注

    关注

    0

    文章

    97

    浏览量

    5375
收藏 人收藏

    评论

    相关推荐

    HarmonyOS应用兼容稳定性测试

    HAP 和 APP 两种格式,如果未上传应用,请先从本地上传一个 HarmonyOS 应用包。 ● 测试时长设置:设置稳定性测试测试时长。 说明 每天只能
    发表于 12-25 10:56

    药品稳定性试验箱的作用

    、潮湿等环境下对新药品进行测试,也可以用作某些特殊需要恒定温度和恒定湿度药品的保存箱。药品稳定性保存  药品稳定性试验箱在功能结构上包含了制冷系统、制热系统、加湿系统等三个部分,这三个
    发表于 06-22 16:29

    瞬态稳定性测试:注意步长

    简单处理后,John 选择了能达到 45 度相位裕度的 RISO 值,然后就可以在工作台上进行结果测试。如果您遇到了同样的问题,那么需要小心。大部分在仿真中测试稳定性的高级方法通常在工
    发表于 09-20 15:37

    如何测试电源设计的稳定性测量

    产后期因环境变化和/或工作极限条件而变得不稳定。在这些情况下,原型设计可能运行良好,但电源内的相位和增益裕度却没在原型测试中得到测试。如果设计人员能够对电源的稳定性
    发表于 09-20 16:00

    LED灯具的性能及稳定性测试

    稳定性测试。费思方案设备:电源:FTG系列电源。FTP系列电源(供电)负载:FT6100系列多通道电子负载,(用于分配个通道电流)实现原理:负载能够精准快速的控制回路中的电流,实现恒流输出。并且可以实现
    发表于 12-07 15:00

    开关电源稳定性测试 开关电源稳定性

    测出来的结果是不准确的。 图 3 FRA测量时注入电阻的位置及接线 四、开关电源稳定性测试举例:在了解影响产品稳定性的因素和判定准则以及怎样来检测产品后,就可以对所测的产品的结果进行
    发表于 12-24 18:35

    如何测试LWIP通信稳定性和速率?

    原子哥你好:我咨询下您,用STM32移植LWIP的话,就你的经验。稳定性好不好?我发送大一点的数据包。比喻我不断发送1500Byte左右的数据包。用tcp调试助手接收。这个通信 速率您测试过没有呢?会不会不稳定啊?我的目的是想用
    发表于 07-12 04:36

    运放稳定性的标准及测试

    运放稳定性的标准及测试环路增益稳定性举例
    发表于 04-06 06:30

    服务器稳定性测试方法

    ,如果要进行香港服务器测试就要针对你放置网站的每个细节和功能全面的操作测试,根据每个功能操作下的不同性能来测试。2、多线路测试在对香港服务器
    发表于 09-20 09:56

    RyanMqtt实现MQTT3.1.1协议的客户端

    使用,作者不对使用此库造成的任何经济损失负责。(尽管此库QOS2消息等级经过很多测试,但是异步组件由于诸多因素例如波动非常大的网络甚至无法建立稳定的tcp连接、mqtt服务端的策略配置等,无法做到绝对的实时性,需要用户手动做到数
    发表于 12-01 15:19

    如何测试ERP系统的稳定性

    一个软件的稳定性对企业的工作产生着重要的影响,ERP系统如果在使用过程中安全性出现问题的,可能会导致数据的缺失,这将会影响决策。那么如何测试ERP系统的稳定性呢?下面一起来了解一下吧! 测试
    发表于 05-13 17:00 1033次阅读

    电源测试稳定性测量

    电源测试稳定性测量
    发表于 11-07 08:07 7次下载
    电源<b class='flag-5'>测试</b>:<b class='flag-5'>稳定性</b>测量

    如何保证电源适配器的质量稳定性

    如何保证电源适配器的质量稳定性? 要保证电源适配器的质量稳定性,需要从设计、制造、测试和验收等多个环节入手,以下是详细的措施: 1. 设
    的头像 发表于 11-23 16:04 1096次阅读

    如何测试DDR内存的稳定性

    工具,可以对内存进行全面的稳定性测试。 操作:通过运行MemTest86,软件会对内存进行多种复杂运算,从而检测出内存可能存在的错误。 注意事项:
    的头像 发表于 11-29 15:01 515次阅读

    如何测试晶振的稳定性

    以下是一些常用的方法来测试晶振的稳定性
    的头像 发表于 11-29 16:41 257次阅读