`
ymq267
  • 浏览: 125197 次
  • 性别: 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)自己做流量控制
三种方法都各自有着优缺点,需根据不同情况自己确定。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics