2012-05-08 67 views
6

我在这里没有具体的查询;只需要一些设计指导。MQTT vs MQ设计考虑因素

我在Node.js , MQTT and Websockets上遇到过这篇文章。 我想我们可以使用Node/Java + ActiveMQ + Websockets实现类似的目的。我的查询是如何在MQ和MQTT之间进行选择?与ActiveMQ相比,我可以在大中型项目中安全地使用像“mosquitto”这样的“开放式”服务器吗?

This article已经有了一些洞察力,看起来我应该同时使用MQ和MQTT,因为如果我将来获得轻量级客户端,MQTT可能会有所帮助。

谢谢!

回答

5

除了Shashi所说的,它们具有不同的功能和用例。

MQTT为pub/sub定义了一个标准的有线协议,正如Shashi指出的那样,它是为非常轻量级的环境设计的。因此,它具有非常小的线路格式,几项基本的服务质量和基本功能集。另一方面,传统的消息排队系统通常是专有的(尽管AMQP旨在改变这种情况),既包括点对点也包括pub/sub,提供许多服务质量并且倾向于具有更重的线路格式,虽然这存在以支持增强的特征集,例如回复到寻址,协议转换等

MQTT的一个很好的例子是,你必须在手机,平板电脑和机顶盒端点。这些具有最小的马力,内存和系统资源。通常,来自这些客户的连接要么停留在MQTT上,要么在他们自己之间进行交谈,要么通过桥接连接到企业级MQ,以便与后端应用程序进行互通。例如,基于MQTT的聊天客户端可能会通过MQTT代理直接与另一个客户交谈。另外,基于MQTT的内容交付系统可以连接到企业消息传递网络,该网络托管广告和其他内容,以交付到在手机和平​​板电脑上运行的应用程序。企业后端可以管理所有的广告投放统计数据和视图,MQTT支持允许在最终用户设备上以最小的电池或马力消耗来推送内容。

因此,MQTT用于功耗,带宽和网络稳定性问题的嵌入式系统和终端用户设备。这通常与传统MQ消息传递相结合,尽管我从未见过将MQTT用作传统消息应用程序的专用传输。据推测,这是因为MQTT缺乏一些更强大的功能,例如消息关联,回复寻址和点对点寻址,这些功能是20年来消息传递的核心。

+0

感谢您的例子! – SlowAndSteady

2

MQTT协议适用于小型设备,如传感器,手机等具有较小内存占用的设备。这些设备通常位于一个脆弱的网络中,并且通常具有较低的计算能力。

这些设备通过MQTT协议连接到组织后端网络,用于发送和接收消息。例如,输油管道中的温度传感器会收集流过管道的油温并将其发送到控制中心。作为响应,可以通过MQTT将命令消息发送到另一个设备,以减少/停止通过该管道的油流量。

WebSphere MQ能够向/从MQTT设备发送/接收消息。因此,如果您计划实施基于消息传递的解决方案,其中涉及设备&传感器,则可以考虑MQ和MQTT。

HTH

1

如已经讨论的,MQTT定义了一个可应用的有线协议(即信息如何被组织,然后在被传送之前被串行化)。如同基于JMS和AMQP的代理,其不同之处在于传输级别的有线协议AMQP定义了标准化的传输线协议,而不是JMS代理ActiveMQ定义了自己的专有格式,即OpenWire。当然,不像Mosquitto这样的标准实现实现专有的有线传输协议(这会影响互操作性,但在性能方面可能是更好的选择)。

回到问题。像Mosquitto这样的经纪商可以根据您在可扩展性和可靠性方面的需求,在实际情况下使用:通常需要集群来确保i。可用性,ii。可靠性和iii。可扩展性。经纪人认为PAN(私人区域Netorks)通常不提供OTB(Out of the Box)这样的功能--ActiveMQ提供这种功能。

最后,您可以根据自己的要求为您选择最佳解决方案。