MQTT与XMPP我应该选择哪个?

Sco*_*ott 36 c# java android xmpp mqtt

概观

我在客户端(Android手机)和服务器(Windows Server)之间来回发送消息.通过TCP使用持久连接,哪种协议将是最佳解决方案.我正在考虑性能,可扩展性,消息大小和电池寿命.消息必须按顺序到达目的地,不能重复.

MQTT

这似乎是更好的解决方案,但似乎很少有用户的大型实现示例.我不确定是否可以将其集成到Windows服务器中,或者是否必须是另一个应用程序或服务器正在运行.最后,似乎总体上缺乏有关它的信息.

XMPP

这似乎有很多实现,例子,甚至一本书:).然而,主要目的似乎是即时通讯客户端和谷歌谈话之类的东西.这是服务器和客户端之间消息传递的最佳解决方案吗?我知道目前XMPP主要用于客户端到服务器到客户端架构.

如果我错了请纠正我,并提前感谢任何指导.

Mar*_*ulz 61

这取决于您尝试做什么以及您正在运行的硬件.

MQTT具有非常低的保持活动流量.XMPP是一种IM协议,在处理所有客户端之间的状态消息方面具有更高的开销.

如果您的内存占用量很小,那么必须处理XML解析器可能会使XMPP无法使用.

请记住,MQTT代表Message Queue遥测传输,即它是一种传输协议,根本不定义消息格式 - 您必须提供此消息; XMPP是一种即时消息传递协议,它仔细定义所有消息格式,并要求所有消息都是XML格式.

除此之外:MQTT是一个发布订阅协议,XMPP是一种即时消息传递协议,可以扩展(使用XEP-0060)来支持发布订阅.在构建系统时需要考虑这一点.

我们发现MQTT是安静的成功者.你的milage可能会有所不同.

这一切都取决于......

追踪LinkedIn最近的公告,他们讨论了他们在移动应用中使用MQTT的情况.

干杯马克

(顺便说一下,安迪在我们提到的时候稍微偏离了我们.我们在澳大利亚布里斯班昆士兰大学教育创新与技术中心(CEIT))

  • 我认为你的意思是Facebook,而不是LinkedIn.链接是https://www.facebook.com/notes/facebook-engineering/building-facebook-messenger/10150259350998920 (3认同)

Tei*_*ixi 10

我认为简而言之,MQTT优于XMPP的优势是:

  • 吞吐量:开销更少,重量更轻
  • 二进制vs纯文本
  • QoS到位(即发即弃,至少一次,完全一次)
  • 发布/订阅(XMPP要求扩展XEP-0060)
  • 不需要XML解析器

  • 虽然你的所有观点都是正确的,但关于pub/sub的观点却是误导性的.许多XMPP服务器都支持XEP-0060,因此它已经"就位".你听起来好像有一些额外的工作或需要的东西.XMPP中的大部分功能都是在扩展中定义的,这些扩展通常只是核心中定义的基本消息传递结构的应用程序级规则. (4认同)

And*_*per 5

我认为你可能正在纠正你对XMPP的评估,因为它是一个主要面向聊天的协议 - 它也是非常重量级的,并且使用XML广泛地使它变得冗长.我知道布里斯班大学的CEIT人员专门研究了这两种方案的差异和最佳用途.MQTT非常轻巧,功耗低 - 十多年来一直用于遥测和传感器应用,并且已经由IBM和合作伙伴大规模部署.人们现在发现像这样的简单协议是移动开发的理想选择.

你究竟想要实现什么目标?mqtt.org网站旨在提供良好的内容链接.还有关于它的IRC频道和邮件列表.我们能帮你什么吗?