`
ymq267
  • 浏览: 130333 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

MQTT多线程发布消息测试错误

    博客分类:
  • MQTT
阅读更多
1.正在进行过多的发布 (32202)

查看了源码,分析原因分析入下:

发布消息的时候qos=1,需要等待broker会ack,由于客户端发送量太大,未能及时抽到broker回复的ack(这一点可能因为网络有延时),但是客户端维持的一个变量—maxinflight,默认值为10,如果以qos=1发送的消息,maxinflight就会+1,当抽到broker回复的ack时,maxinflight-1,所以当客户端发送量太大时,又未能及时收到broker回复的ack,导致达到了maxinflght的值,出现上述问题。

鄙人能想到的临时解决方法如下:
(1) 改qos=0
(2)调整maxinflight值的上限
(3)自己做流量控制
三种方法都各自有着优缺点,需根据不同情况自己确定。
分享到:
评论

相关推荐

    MQTT测试客户端 Delphi10.3测试可用1

    3. **消息处理**:检查接收到的消息是否完整无误,以及在多线程环境下性能如何。 4. **异常处理**:模拟各种异常条件,如网络中断、服务器拒绝等,看客户端是否能适当地处理这些情况。 5. **性能测试**:评估在高...

    OneNET MQTT协议接入C语言demo_C语言_MQTT_物联网

    4. 发布消息:使用`mqtt_publish`函数,指定主题和消息内容。 5. 处理接收到的消息:注册回调函数,处理MQTT服务器推送的消息。 6. 断开连接:当不再需要通信时,调用`mqtt_disconnect`函数。 在实际应用中,还需要...

    c#MQTT服务器源代码

    MQTT协议采用发布/订阅模型,其中,发布者向主题发布消息,订阅者则可以订阅特定主题来接收消息。这种模型允许消息的广播和选择性接收,使得消息传递灵活且高效。 4. **连接管理** MQTT服务器需要管理客户端的...

    qt 的mqtt测试demo

    发布者向特定主题(Topic)发布消息,订阅者则可以订阅一个或多个主题,接收并处理来自发布者的消息。代理负责消息路由,确保正确将消息分发到对应的订阅者。 在Qt中实现MQTT,我们需要使用支持MQTT的库。一种常见...

    .net开发的mqttclient客户端工具

    7. **线程安全**:在多线程环境下,客户端库的使用需要确保线程安全,避免并发访问导致的问题。 8. **异常处理**:良好的错误处理机制是必不可少的,这包括处理网络故障、服务器错误、认证失败等异常情况。 9. **...

    tms mqtt client 2.0源码版本

    2. **订阅与发布**:TMS MQTT客户端2.0允许用户订阅多个主题并接收相应消息,同时能够向服务器发布消息。它支持QoS(服务质量)等级0、1和2,确保消息的可靠传输。 3. **会话保持**:客户端可以设置会话保持时间,...

    pahoMQTT.c 源码包

    4. **线程安全**:如果库设计为多线程安全,源码中会包含互斥锁、信号量等同步原语,以确保并发访问的正确性。 5. **回调函数**:源码可能会提供回调函数接口,允许用户在特定事件(如连接成功、接收到消息等)发生...

    LabVIEW实现MQTT客户端

    此外,对于大型项目,可能需要考虑多线程和错误处理,以确保MQTT客户端的稳定性和响应性。LabVIEW的事件结构和错误处理机制可以帮助我们实现这一目标。 总之,通过LabVIEW实现MQTT客户端,我们可以轻松地集成MQTT...

    基于lwip的mqtt移植包

    3. **多线程与单线程模式**:LwIP支持多线程和单线程操作,适应不同系统架构的需求。 4. **内存管理**:LwIP有自己的内存池管理系统,优化了内存分配和释放。 **基于LwIP的MQTT移植步骤** 1. **配置LwIP**:首先...

    jmeter压测mqtt资源包

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,设计思想是开放、简单、低开销、可靠,并且适用于受限环境,如移动设备或低带宽、高延迟的网络连接。MQTT广泛应用于物联网(IoT)领域...

    paho.mqtt.cpp-master.zip

    3. **线程安全**:在多线程环境中,库需要确保数据访问的安全性,避免并发问题。 4. **错误处理和异常处理**:提供良好的错误报告机制,可能通过异常或返回值来处理错误。 5. **构建系统**:可能使用CMake或其他...

    qt 写一个mqtt服务器压测程序 可实现十万台设备登入

    此外,还要考虑多线程和并发处理,确保在高负载下仍能正常运行。 **压测程序的关键要素** 1. **连接模拟**:压测程序应能模拟大量设备同时连接到服务器,这可以通过创建多个并发线程或使用异步I/O来实现。 2. **...

    MQTT-C在visual studio上的移植工程,具体移植过程请看我的博客文章

    7. **优化与打包**:当移植成功并经过充分测试后,可以对代码进行优化,例如考虑性能、内存管理和多线程支持。最后,将工程打包成静态库或动态库,供其他Windows应用使用。 通过这个移植过程,开发者可以在Windows...

    LwIP协议深度剖析与实战演练_coap_mqtt_spec

    学习MQTT实战,将涉及设置MQTT代理,编写发布和订阅的应用程序,以及测试消息的可靠传输。 在《mqtt-v3.1.1-os.pdf》和《rfc7252.txt.pdf》文件中,分别详细描述了MQTT 3.1.1版本的规范和COAP的RFC 7252标准。这些...

    采集和显示MQTT协议的数据和MySQL数据库中数据.zip

    在这个项目中,C#的特性如面向对象设计、丰富的类库支持、强大的异常处理和内置的多线程支持,都为实现MQTT协议和MySQL数据库的高效交互提供了便利。 总结来说,这个项目展示了如何利用C#开发一个完整的物联网数据...

    QtMqttClient:使用QT创建的mqtt客户端,可用于mqtt的调试

    QtMqttClient利用了Qt的网络模块和多线程特性,实现了MQTT协议的客户端功能。 **二、MQTT协议** 1. **协议概述**:MQTT设计之初就考虑到了低功耗设备和受限网络环境,因此它的协议报文非常简洁,只包含必要的控制...

    串口监听端,从端口监听到数据并根据数据类型使用HTTP或者MQTT协议发送消费端

    这通常涉及到多线程或异步编程,确保串口读取与主程序逻辑的并行执行。 3. **数据类型检测**:监听到的数据可能包含不同格式的信息,比如JSON、XML、二进制等。程序需要解析数据,判断其类型,这可能需要数据结构和...

    在编译部署emq的qmqtt过程中,需要整理出qmqtt的头文件,资源中对应qmqtt版本为1.0.0

    此外,可能还需要考虑多线程安全、性能优化以及与其他EMQ模块的协同工作。 总结一下,`qmqtt`作为EMQ的一个组件,其头文件是编译和使用的关键。通过正确地获取和处理头文件,编译和链接`qmqtt`,并将其部署到EMQ...

    qmqtt-master123.rar

    通过深入研究qmqtt-master源码,开发者不仅可以了解MQTT协议的工作细节,还可以学习到Qt的多线程、网络编程以及事件驱动编程等知识。同时,通过分析和修改源码,可以针对特定需求定制MQTT客户端,进一步提升应用的...

    物联网专用消息队列EMQ的安装使用以及压测.docx

    在测试EMQ集群性能时,可以创建线程组模拟并发连接,发布和订阅消息,监控EMQ集群的处理能力和稳定性。 2.1. JMeter安装:从官网下载JMeter,解压缩后运行`bin/jmeter.sh`(Linux)或`bin/jmeter.bat`(Windows)。...

Global site tag (gtag.js) - Google Analytics