MQTT:不可靠的传递而不是 TCP

Posted

技术标签:

【中文标题】MQTT:不可靠的传递而不是 TCP【英文标题】:MQTT: Not reliable delivery instead of TCP 【发布时间】:2012-05-05 13:23:57 【问题描述】:

由于 MQTT 协议流经 TCP,三个 QoS 级别之间的差异非常微妙。在正常情况下,TCP 将确保交付并防止重复。

我打算使用 MQTT 将实时数据发送到移动设备,但我不需要可靠的传递。保持尽可能低的电池消耗非常重要,因此最好避免发送不必要的消息(TCP 的确认)。

是否可以通过 UDP 或其他不可靠的传输层协议实现 MQTT?是否有任何现有的图书馆这样做?

【问题讨论】:

【参考方案1】:

MQTT-S 可以在 UDP 上运行,但目前还没有任何公开可用的库。你确定电池使用有那么大的问题吗?在http://stephendnicholas.com/archives/219http://stephendnicholas.com/archives/219 上对 android 上的 MQTT 电源使用进行了一些实验。

我认为 MQTT 本身确实利用了 TCP 交付和排序保证。我相信很难保证它在 UDP 上工作。

【讨论】:

谢谢,我知道 MQTT-S,但这并不是我所需要的。移动设备将以非常高的速度接收信息,因此每项改进都会对其自主性产生相当大的影响。我想你说的实验可能是these。 是的,这就是我在答案中包含的链接。

以上是关于MQTT:不可靠的传递而不是 TCP的主要内容,如果未能解决你的问题,请参考以下文章

TCP可靠传输详解

MQTT 消息中间件特性

TCP协议和UDP协议

MQTT主要特性

T09要认识到TCP是一个可靠的,但不是绝对可靠的协议

可靠UDP设计