AMQP与MQTT之间的区别
在过去几十年中,用于广泛部署的消息的异步排队的开放源协议是AMQP vs MQTT。最近,它已适应其新更新。
AMQP有意成为国际标准组织或国际电化学委员会的一部分,并被OASIS选择,MQTT已采用Eclipse。
AMQP使用Wire执行其消息传递队列。因此,有线协议在网络上转换为字节值的洪流。
MQTT是为具有最小带宽的受限设备而开发的。这是一个轻量级的广播系统,用户可以像客户端一样传输和接收消息。
AMQP与MQTT之间的关键区别
物联网中同时使用了AMQP和MQTT。但是,让我们讨论主要差异:
- MQTT具有客户端/代理体系结构,而AMQP具有客户端或代理以及客户端或服务器体系结构。
- MQTT遵循发布和订阅的抽象,而AMQP遵循响应或请求以及Publish或订阅的方法。
- AMQP的标头大小为8个字节,MQTT为2个字节。
- MQTT的消息大小较小且已定义,而AMQP的价格可协商且未定义。
- MQTT的方法是连接,发布,关闭,订阅和断开连接。
- AMQP遵循消费,交付,发布,获取,选择,确认,删除,恢复,拒绝,打开和关闭。
- MQTT对缓存和代理有部分支持,而AMQP提供了全部支持。
- AMQP和MQTT都遵循TCP协议,二进制标准和开放源代码排队系统。
- AMQP提供的安全性是IPSec,SASL,TLS或SSL,而MQTT仅提供TLS或SSL安全标准。AMQP与TCP一起使用SCTP进行传输。OASIS支持AMQP和MQTT。
- MQTT交付的服务质量非常好,并且会忘记QoS是否为0。如果QoS为1,则至少为1;如果QoS为2,则为1。AMQP提供的服务质量是用于结算和取消类似于MQTT的格式。
AMQP与MQTT对照表
以下是AMQP与MQTT之间的比较:
比较的基础 | AMQP | MQTT |
---|---|---|
定义 | AMQP已扩展为高级消息队列协议。AMQP提供了更丰富的消息传递范围。 | MQTT被定义为消息队列遥测传输。它提供了一种简单的消息排队服务方式,并且主要在嵌入式系统中实现。 |
背景 | 金融机构将AMQP开发为开放源代码和客户驱动的队列。在没有任何定制的情况下,它在市场上日趋完善。 | MQTT主要由供应商驱动,由IBM开发,具有很高的实施成本。 |
协议设计 | AMQP使用TCP进行消息的异步传输,而与OS,硬件或编程语言的选择无关。它提供了具有完整生命力的消息传递服务。AMQP在各方内部对网络用户和基础结构资源的各种控制下进行操作。 | 与AMQP相似,MQTT使用TCP来以独立于任何属性的异步方法共享消息。它是专门为在网络的最小带宽上运行的小型设备而设计的。 MQTT认为复杂的参与者是由附近的私有基础结构管理的。 |
优化框架 | 它是在数据框架的基础上进行高级优化的,该框架具有一种缓冲方法,可以提高服务器的性能。 | 它也基于有线(wire)框架,该框架使用类似流的方法来执行最小存储设备的帧。 它不允许传输批量消息。 |
消息服务 | AMQP应用于五种不同的属性,例如发布者-订阅者不受影响的生存时间,只要它需要保留在队列中并且在没有使用队列的情况下保持静止即可。它支持各种消息循环,经典或传统消息队列,组合以及保存和转发。它执行元数据消息以帮助幂等消息和消息分组。 | 它基于发布和订阅内容的消息传递,并且是高度瞬态的。它主要用于主动路由因此链接的订户和发布者。它仅限于传统的延长寿命的消息队列中使用。 |
消息事务 | 它支持不同的确认,事务,用例以及整个消息队列。它可以分解各种事务代码,而这是必需的,并在存在延迟以微调性能时确认已过期。 | MQTT不支持任何类型的事务。它仅支持常规确认。 |
连接时的安全性 | AMQP与TLS和SASL统一,并具有使用该连接的特殊功能。它具有消除SASL和TLS策略并通过连续更新提高性能的能力。 | MQTT不会对连接中的任何安全问题采取措施。 |
对用户的安全 | AMQP利用SASL方法来选择安全性,而无需更改协议。它为同一网络中的组件提供了不同的名称。因此,此功能使我们能够使用嵌套的防火墙和网守。广播任何消息之前,它将与用户进行身份验证。 | MQTT需要小的用户名和最少的密码,并且在此趋势期间没有设置任何预防措施。 |
最后值队列 | 它不支持队列中的最后一个值。 | 它提供Retain命令并支持队列中的最后一个值。 |
消息可靠性 | 它仅启用火灾和遗忘策略。一旦收到就无法检索。 | 它类似于AMQP,并且数据传递过于可靠。 |
消息的命名空间 | 它允许以多种方式查找消息,例如节点和队列。 | 它在消息的分层传输中使用“命名空间”。 |
附加的属性 | AMQP支持对等连接,并允许整个网络的负载平衡,并且它是多路复用的。它可以使用容器,并且主题是双对称的。 | MQTT提供了DNS服务器的基本要求。MQTT是不对称的,不支持任何高级功能。 |
实现 | AMQP在少于64kb RAM的组件中实现。 | 它是开放源代码库中的较小协议,在小于64kb RAM的设备中实现。 |
可扩展性 | 它具有允许在特定供应商中扩展的结构点,并且同意即将推出的扩展不兼容的方式。它允许通过隔离更改层。 | MQTT需要该协议的整个新草案。 |
结论
尽管AMQP和MQTT在体系结构和协议上有很多差异,但是它们已被广泛用于诸如物联网之类的各种应用中。作为开放源代码协议,AMQP和MQTT都可以根据客户端需求和可用带宽在所有应用程序中使用。