我目前正在使用mqtt 3.1.1和mosquitto broker 1.4.3进行嵌入式c项目。我遇到的问题是当客户端主板发布并订阅相同主题时,在随机数量的消息之后客户端被阻止并且连接超时。
我试图通过3G网络发送一个25字节的字符串消息。在pub和amp;上使用QOS2 sub,我已尝试在客户端上进行keepalive(15s< - > 120s)的不同设置,并且在每个消息(2000ms< - > 300000ms)之间有延迟,在我尝试过不同设置的代理上也没有,但没有似乎工作,是否有可能通过3G网络使用QOS2发送消息或我是否期望太多?
我们希望保证传输一些至关重要的数据,如果在mqtt上无法做到这一点有更好的选择吗?
答案 0 :(得分:0)
120毫秒的保持声音听起来很虚伪。
Keepalive可供代理检测到客户端可能已丢失,而无需等待TCP连接超时。如果不是几分钟,您通常会在秒范围内使用keepalive。
保持120ms的保持活动状态,您必须至少每100ms左右发送一个PING数据包(或在该时间范围内执行任何其他MQTT交换),这样就可以解释为什么您在场景中引入了如此多的延迟 - 并且可能也会杀死你的3G数据计划; - )
我建议你开始使用30秒的保持活力,看看是否能提高效果。