6

我这里没有具体的查询;只需要一些设计指南。

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

这篇文章有一些见解,看来我应该同时使用 MQ 和 MQTT,因为如果我将来获得轻量级客户端,MQTT 可能会有所帮助。

谢谢 !

4

3 回答 3

5

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

MQTT 为 pub/sub 定义了一个标准的有线协议,正如 Shashi 所指出的,它是为非常轻量级的环境而设计的。因此,它具有非常小的线路格式、一些基本的服务质量和基本的功能集。

另一方面,传统的消息队列系统通常是专有的(尽管 AMQP 旨在改变这一点),涵盖点对点和发布/订阅,提供许多服务质量,并且往往具有更重量级的有线格式,尽管存在支持增强的功能集,例如回复寻址、协议转换等。

MQTT 的一个很好的例子是您在手机、平板电脑和机顶盒中拥有端点。这些具有最小的马力、内存和系统资源。通常来自这些的连接要么保持 MQTT 并且它们之间相互通信,要么它们被桥接到企业级 MQ,在那里它们可以与后端应用程序相互通信。例如,基于 MQTT 的聊天客户端可能会通过 MQTT 代理直接与另一个客户端对话。或者,基于 MQTT 的内容交付系统将桥接到企业消息传递网络,该网络托管广告和其他内容,以交付给在手机和平​​板电脑上运行的应用程序。

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

于 2012-05-08T17:43:43.010 回答
2

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

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

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

高温高压

于 2012-05-08T07:21:32.903 回答
1

正如已经讨论过的,MQTT定义了一个适用的有线协议(即,在传输之前如何组织信息并对其进行序列化)。Mosquitto,或其他任何 MQTT 代理,只是Hub 和 Spoke 集成模式的实现,就像基于 JMS 和 AMQP 的代理一样,区别在于传输级别的有线协议AMQP定义了标准化的传输有线协议,而不是 JMS 代理像 ActiveMQ 定义了自己的专有格式,即OpenWire. 当然,不是标准实现,如 Mosquitto,实现专有的有线传输协议(这会影响互操作性,但在性能方面可能是更好的选择)。

回到问题。像 Mosquitto 这样的代理可以根据您在可扩展性和可靠性方面的需求在实际场景中使用:通常需要集群来确保 i. 可用性,ii。可靠性和 iii。可扩展性。考虑 PAN(Private Area Netorks)的经纪人通常不提供 OTB(开箱即用)这样的功能 - ActiveMQ 提供了这一点。

最后,为您选择最佳解决方案取决于您的要求。

于 2015-02-03T09:44:11.010 回答