订阅与发布者相同的主题时发布失败了吗?

时间:2015-11-26 21:24:13

标签: c embedded messaging mqtt mosquitto

我目前正在使用mqtt 3.1.1和mosquitto broker 1.4.3进行嵌入式c项目。我遇到的问题是当客户端主板发布并订阅相同主题时,在随机数量的消息之后客户端被阻止并且连接超时。

我试图通过3G网络发送一个25字节的字符串消息。在pub和amp;上使用QOS2 sub,我已尝试在客户端上进行keepalive(15s< - > 120s)的不同设置,并且在每个消息(2000ms< - > 300000ms)之间有延迟,在我尝试过不同设置的代理上也没有,但没有似乎工作,是否有可能通过3G网络使用QOS2发送消息或我是否期望太多?

我们希望保证传输一些至关重要的数据,如果在mqtt上无法做到这一点有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

120毫秒的保持声音听起来很虚伪。

Keepalive可供代理检测到客户端可能已丢失,而无需等待TCP连接超时。如果不是几分钟,您通常会在秒范围内使用keepalive。

保持120ms的保持活动状态,您必须至少每100ms左右发送一个PING数据包(或在该时间范围内执行任何其他MQTT交换),这样就可以解释为什么您在场景中引入了如此多的延迟 - 并且可能也会杀死你的3G数据计划; - )

我建议你开始使用30秒的保持活力,看看是否能提高效果。