欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MQTT多线程发布消息测试错误 博客分类: MQTT MQTT 

程序员文章站 2024-03-22 15:17:46
...
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