除了 Shashi 所说,它们具有不同的功能和用例。
MQTT 为 pub/sub 定义了一个标准的有线协议,正如 Shashi 所指出的,它是为非常轻量级的环境而设计的。因此,它具有非常小的线路格式、一些基本的服务质量和基本的功能集。
另一方面,传统的消息队列系统通常是专有的(尽管 AMQP 旨在改变这一点),涵盖点对点和发布/订阅,提供许多服务质量,并且往往具有更重量级的有线格式,尽管存在支持增强的功能集,例如回复寻址、协议转换等。
MQTT 的一个很好的例子是您在手机、平板电脑和机顶盒中拥有端点。这些具有最小的马力、内存和系统资源。通常来自这些的连接要么保持 MQTT 并且它们之间相互通信,要么它们被桥接到企业级 MQ,在那里它们可以与后端应用程序相互通信。例如,基于 MQTT 的聊天客户端可能会通过 MQTT 代理直接与另一个客户端对话。或者,基于 MQTT 的内容交付系统将桥接到企业消息传递网络,该网络托管广告和其他内容,以交付给在手机和平板电脑上运行的应用程序。
因此,MQTT 用于功耗、带宽和网络稳定性问题的嵌入式系统和最终用户设备。这通常与传统的 MQ 消息传递结合使用,尽管我从未见过将 MQTT 用作传统消息传递应用程序的专有传输。据推测,这是因为 MQTT 缺乏一些更强大的功能,例如 20 年来一直作为消息传递核心的消息关联、回复寻址和点对点寻址。